问题标签 [abstraction]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
40 浏览

orm - BackingStoreException 的备用名称

我即将承担从 ORM 的公共接口中抽象出所有 SQLExceptions 的任务,使用更通用的东西——即声明一个通用异常,在大多数情况下会包装一个 SQLException),我想知道命名。

我正在考虑类似于 BackingStoreException 或 StorageMediumException 的东西,但对我来说似乎都不令人惊奇,而且它是一个彻底而持久的变化,所以我想为它起一个非常好听的名字。

所以我在征求建议和意见。

抱歉,如果这是非常主观的,但我强烈认为库中的命名约定实际上非常重要。

谢谢。

ps 有问题的 ORM 是用 Java 编写的 SoenEA ( https://soenea.htmlweb.com/trac )。

0 投票
3 回答
576 浏览

javascript - 编写一个 JavaScript 抽象抽象 - 这是理智的吗?

我编写了一个运行 Prototype & Scriptaculous 的 JavaScript 应用程序。我正在考虑将它作为一个开源产品推出,并且希望它也能够在 jQuery 上运行——我通常将 jQuery 用于我的大多数其他应用程序,除了这个应用程序最初构建的网站。

我最初考虑构建两个独立的应用程序,但维护它们会很耗时。相反,我正在考虑构建一个库抽象层来检测页面是否正在运行 jQuery 或 Prototype,然后调用适当的方法。我不打算抽象整个库,只抽象适用于我的应用程序的功能——即选择器、事件和效果。我的应用程序的核心代码不到 500 行,所以我不需要担心太多。

因此,$('id')我不会调用LA.$('id')(LA for Library Abstraction),而不是调用$('id')原型和$('#id')查询等......

这听起来合理吗?我想不出任何技术障碍,尽管我曾预料到有人曾经尝试过。我在搜索中找不到类似的东西。

0 投票
41 回答
464993 浏览

java - 为什么要使用 getter 和 setter/accessor?

使用 getter 和 setter 有什么好处 - 只获取和设置 - 而不是简单地为这些变量使用公共字段?

如果 getter 和 setter 所做的不仅仅是简单的 get/set,我可以很快解决这个问题,但我不是 100% 清楚如何:

比:

而前者需要更少的样板代码。

0 投票
3 回答
56 浏览

api - 将排序值抽象为键值

我正在为已排序的对象集合编写接口。像往常一样,我让用户来指定这些项目的排序方式。然而,我目前在提供键值接口(排序键与值显式分离)或仅值接口(值也是排序键,或者用户必须处理单独的排序)之间感到困惑键通过传入一些比较函数)。

在我看来,键值接口迫使用户始终拥有与值分开的键,即使某些值自然形成了自己的键。然而,它确实免除了用户处理密钥的责任,在使用我的 API 时可能会导致更简单和更清晰的用户代码。仅值接口允许更紧凑地表示作为其自己的键的值,但在存在自然键值区别的情况下强制用户跟踪和处理自己的键。

当然,有文献支持这两种方法,尽管在我看来(这可能是错误的)旧文献倾向于仅使用价值方法,而较新的文献更喜欢键值方法。

我很好奇你在这种情况下的偏好。我们是否已经到了一个通常比另一个更受欢迎的时间点?如果没有,您通常使用什么,为什么?

0 投票
4 回答
142 浏览

memory - 环境(例如 Ruby)如何处理大量整数?

我在 Ruby (MRI) 中的整数拒绝溢出。我注意到类从 fixnum 更改为 bignum,但我想知道这是如何建模的,以及 ruby​​ 使用哪种进程对这些大量整数执行算术运算。我已经在 SCHEME 以及其他环境中看到了这种行为。

我问是因为我想在 C 程序中实现类似的东西,并且想知道 bignum + bignum 如何简化为原始操作。

任何指针?

0 投票
3 回答
80 浏览

asp.net-mvc - 是否应该为服务提供对另一个服务的引用,或者调用者是否应该承担额外的责任?

我的项目中有两个类(使用 ASP.NET MVC):AuthenticationService 和 ProfileService。当新用户在我的站点注册时,Authentication 控制器的 Register 操作调用 IAuthenticationService 中的 Register 方法,该方法根据接口所指的任何具体身份验证模块为用户创建身份验证记录(注入到控制器的构造函数中)。作为注册过程的一部分,将为用户创建配置文件记录,该配置文件记录是通过在注入的 IProfileService 上调用 CreateProfile(User) 来创建的。

目前控制器正在调用这两个服务,但我喜欢我的控制器执行尽可能少的业务逻辑的想法。我想知道除了让身份验证服务知道配置文件服务之外是否还有其他选择,这反过来又需要 IAuthenticationService 的任何未来实现知道调用 CreateProfile?我不禁觉得上面写满了代码气味。

另一种可能性是让第三个服务 {I,}RegistrationService 负责逻辑。

处理这种情况的推荐或首选方法是什么?谢谢

0 投票
3 回答
1422 浏览

c# - C# 控制台应用程序之间的共享功能

我有两个控制台应用程序,查询和更新,它们共享一些功能。我想让这两个类继承自一个公共基类,但问题是,对于控制台应用程序,我必须有一个static Main函数。我目前拥有的是以下内容:

ConsoleBase对我来说,在每个派生类中继承以及将其实例作为static变量似乎是一个设计问题。我这样做的原因是:

  1. 我可以protected static定义派生类中的ConsoleBase其他方法可以访问的方法。static
  2. 我可以将命令行参数传递给 for 的构造函数,做一些ConsoleBase常见的事情,然后通过.publicConsoleBase

所以在派生类中,我混合了对实例的方法/属性的调用ConsoleBase,例如

以及调用继承的静态方法和访问定义的继承常量ConsoleBase,例如

我可以以某种方式清理它吗?从一个类继承以及保留该基类的一个实例以供使用是不是很糟糕?

0 投票
1 回答
110 浏览

abstraction - 如何区分抽象与软件组件

我们如何才能清楚地将架构术语抽象与软件组件区分开来,抽象可以位于软件组件内吗?

0 投票
2 回答
1335 浏览

sql - 具有存储过程支持的 Perl 的 SQL 查询生成器

我正在处理的当前代码库充满了临时条件字符串连接,产生的 SQL 查询不够清晰。我想让它们可维护,但由于现在使用DBIx::Class太复杂而无法迁移(巨大的遗留基础),我希望至少通过使用某种 SQL 生成器使它们更健壮,这只会通过面向对象或任何其他干净的技术(无需数据库处理)创建 SQL。

该生成器的一个一般限制是能够以理智的方式使用存储过程,因为我的应用程序主要基于这些。例如,我需要SELECT * FROM StoredProcedure(Parameter) WHERE .... 我研究了Fey::SQLSQL::Abstract和其他一些,但除了“内联 SQL”之外,没有看到对这种语句的任何支持。我也没有看到对 的任何支持EXECUTE ...,甚至在DBIx::Class中也没有,坦率地说,我真的不敢相信,可能我一直在寻找错误的地方。

我实际上很喜欢Fey::SQL的方法,直到我发现它需要某种方案:

你会推荐什么?

0 投票
1 回答
1447 浏览

abstraction - 设计操作系统抽象层

在为多模块系统开发操作系统抽象层时,应该采用哪种方法:

  1. 创建一个操作系统服务共享库,每个模块都被构建为使用它并作为单独的进程运行。或者
  2. 只创建一个抽象层实例,它提供内存、计时器服务,并且单独生成所有模块实例。

这些方法的优缺点是什么?如果可能的话,还放下任何其他的吗?