问题标签 [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 投票
5 回答
1011 浏览

c# - 在数据持久层中我需要多少抽象级别?

我正在使用 DDD 技术编写应用程序。这是我第一次尝试 DDD 项目。这也是我的第一个绿地项目,我是唯一的开发商。我已经充实了域模型和用户界面。现在我从持久层开始。像往常一样,我从单元测试开始。

如您所见,我没有为 Add() 函数编写任何期望。我做到了这一点,并意识到我还没有选择特定的数据库供应商。事实上,我什至不确定它是否需要一个数据库引擎。平面文件或 xml 可能同样合理。所以我想知道我的下一步应该是什么。

我应该添加另一层抽象...比如 DataStore 接口还是寻找已经为我完成工作的现有库?如果可以的话,我想避免将程序与特定的数据库技术联系起来。

0 投票
4 回答
2190 浏览

spring - 静态代码分析与 Spring 和其他抽象的配合如何?

我处于一种情况,我需要至少付出一些努力从我的源代码中删除从未使用过的代码。一般偏好是使用静态代码分析工具。我们在其他项目中对此非常幸运,但我听到的大多数人都是从事设备级代码的 C/C++ 开发人员。

我是一名在Java EE系统上工作的 Web 开发人员。最受欢迎的分析工具是Coverity Prevent,尽管如果我能提出强有力的理由证明它更适合我们正在开发的技术,我可能会提倡其他东西。

我发现自己很怀疑——当你在一个有很多抽象的系统上运行时,静态代码分析对死代码的有效性是什么?例如,我们使用Spring的依赖注入,以及JSF。在这两种情况下,都没有简单的方法来跟踪从前端到后端的函数调用,并完整地了解什么被调用,什么没有被调用。

我非常担心死代码检查的误报将超过首先运行该工具的价值。

这种场景的经验是什么?当您的架构使用大量抽象时,您是否设法从静态代码分析工具中获得价值?您需要做些什么才能让它以最少的误报工作吗?

0 投票
1 回答
1427 浏览

php - 致命错误:在 (....PATH) 中找不到类名称?

如果我收到以下错误,可能是什么问题。

当我扩展一个类时,我得到了这个错误

例子:

类 ModuleUser 扩展 AbstractModule

致命错误:在 (....PATH) 中找不到类 AbstractModule?

我已经做了大部分的可能性......但我无法解决问题。

任何帮助将不胜感激

提前谢谢

费罗

0 投票
3 回答
223 浏览

design-patterns - 行为逻辑的抽象——有设计模式吗?

我需要抽象一些行为代码,并且在尝试引用调用这些行为的类中的对象时遇到问题,让我尝试解释一下:

我的“父”类有一个名为CurrentPage的属性。我也有一些行为逻辑,修改CurrentPage属性,目前这是写在同一个类中。我现在需要在很多地方重用这种行为,所以我想将它封装/抽象成一个单独的......呃......类?

我能感觉到可能有一种设计模式可以满足我的需求,但我不知道该使用哪一种。

有人可以帮忙吗??

谢谢,马克

(我正在使用 C#、Silverlight 和 MVVM。CurrentPage通知属性,而不是字段,因此不能作为ref类型传递到 Behavior 子类中)

更新:根据要求添加示例:

我正在尝试将 DoWork() 提取到一个单独的类中。

0 投票
2 回答
822 浏览

iphone - Objective-C,类抽象和访问这些变量

我在 java 和 c++ 开发方面有很多经验,所以类和抽象数据对我来说很容易。不久前我才开始目标 C,我主要是在课堂上与 globals 一起工作,一切进展顺利。我刚刚决定抽象我的大部分代码以减少意大利面条式代码,但我遇到了一个自周六以来我一直无法克服的问题。

大纲:

我正在做一个纸牌游戏。我最近将卡片数据抽象为一个包含 3 个变量的类;(int)i_cardValue、(int)i_cardSuit 和 (UIImage *)uii_cardImage。我通过调用创建了一张卡片

我还抽象了引擎部分(基本上是套牌功能,例如洗牌和套牌管理)。甲板是一个可变数组,我有一个初始化甲板功能。

现在,在我的视图控制器中,我调用了 initDeck,然后我使用诸如

pce_Engine 是 PlayingCardEngine 类型的变量。我将 NSLog 行放入 initDeck,当我运行我的程序时,它们不会显示在控制台中。他们没有被调用,所以数组没有被分配,因此我不能向数组添加东西?我以为我做得很好,但是要么我做错了,要么我错过了一些东西,因为将它添加到视图中不会让它显示出来。使用NSLog,deck == nil,所以我想问题是我没有正确访问deck,因此没有添加值,并且到处只有空变量:(。我尝试查看很多关于目标c的教程,但我什至还没有找到一个抽象的,所以我一直无法找到我的问题。

谁能指出我正确的方向?

0 投票
1 回答
53 浏览

database - 应用程序和数据库之间的单一数据键?

是否有一种范例,我可以在一个地方且仅在一个地方更改数据键名称,并由应用程序和数据库正确处理?

我最近求助于使用类常量来映射到数据库字段名称,但我仍然必须使它们与原始数据库键保持一致。

我的意思是,以 PHP 为例,现在我可能会使用

$infoToUpdateUser[ User::FIELD_FIRST_NAME ]

这意味着当我在常量处更改​​它时,我不必搜索代码来更改对该字段的所有引用。

这种情况出现的另一个领域是参考字段。由于一些早期糟糕的设计决策,我有,例如,这些类型的表:

(表名:primary_key)

  • 猫:cat_id
  • 狗:dog_id
  • parrots : bird_id (记住,糟糕的设计,因此 parrots / bird_id 不匹配)
  • 蜥蜴:lizard_id
  • ETC

然后假设我有一系列更新记录的表单类。

  • 动物形态
  • DogForm 扩展了 AnimalForm
  • CatForm 扩展了 AnimalForm
  • ParrotForm 扩展了 AnimalForm
  • ETC

现在我想使用父类 AnimalForm 中的更新函数更新 SQL 数据库中的一条记录,因此我不必在 20 个子类中复制代码。

但是我不知道一种概括更新查询的方法,所以目前每个子类都有一个 idFieldName 成员变量,父类将它插入到查询中,比如

"UPDATE " . $this->table . " SET <data> WHERE " . $this->idFieldName

这样做似乎很草率,但目前我想不出更好的解决方案。

是否有一个设计模型或范例可以链接在一起或抽象数据键名称以供数据库和应用程序共享作为参考?

0 投票
2 回答
8928 浏览

php - Mysqli 抽象,从准备好的语句中获取数组

最近我偶然发现了一个以前可以正常工作的库中的错误,如果我能弄清楚它在哪里,我会被诅咒的。

代码示例如下,对于其中的调试内容,我深表歉意,但我正在努力让它工作。

问题是 $temp 是一个具有正确键(列名)的数组,但所有值都是 NULL。

我认为问题出在

有点,但我无法真正理解它。

0 投票
2 回答
1849 浏览

model-view-controller - Cakephp:将 AppController 抽象到另一个层次,可能吗?

我想知道是否有可能在 AppController 和我的应用程序的其他控制器之间添加另一个抽象控制器?

这样我的控制器,例如 UsersController 扩展 SecureController 和 SecureController 扩展 AppController。

此外,我希望能够让其他控制器直接扩展 AppController:SomeNonSecureController extends AppController。

这是因为我当前的 AppController 在其 beforeFilter 中有各种 Auth 和 ACL 东西,但我也有不需要这些安全性东西的控制器(在一切都需要安全性之前,没有添加新规范).. 但是因为一些许多控制器确实需要它,将代码复制粘贴到所有需要的控制器是没有意义的。

我正在考虑将所有 beforeFilter 安全性内容放入 SecureController - 这样任何需要安全性的控制器都可以简单地扩展它,而其他控制器则直接从 AppController 继承。

你将如何继续做这样的事情?

在此先感谢,肯。

0 投票
5 回答
1333 浏览

ruby - 红宝石抽象

我是 Ruby 新手,主要来自 C# 和 ActionScript 3(以及其他语言)。我对抽象功能很好奇。具体来说,包装和抽象 Ruby 的 FTP 和 SFTP 库。

我四处寻找,发现了一个名为Backup的宝石。它确实引起了我的注意,因为它支持通过 S3、SCP、SFTP 和 FTP 备份内容。所以我想,“哇,这是一个完美的例子!” 我开始浏览源代码,但后来我遇到了如下代码:

在 GitHub 上查看完整源代码

它到处都是 case/when 语句!如果我在 C# 中对此进行攻击,我会编写一个协议接口(或抽象类)并让 FTP 和 SFTP 实现它。然后我的客户端类将只传递一个协议实例而不关心实现。零开关/外壳。

在用 Ruby 编码时,我会很感激在这种情况下的最佳实践的一些指导。

0 投票
4 回答
358 浏览

c++ - 订阅按钮以在 C++ 中动态触发某些功能?

我正在尝试制作一个按钮类(抽象),以便我可以设置当我的程序加载时动态单击该按钮时将触发什么功能。

我想通过读取 XML 文件来构造我的所有按钮,这是为了避免代码复制,所以只有 1 个“通用”按钮类对我来说真的很有用。

我想知道您是否可以动态传递有关方法的必要信息,例如指向方法所有者和问题名称的方法的指针,或者甚至更好的是直接指向方法的指针,以便按钮在单击时调用该函数/方法?