问题标签 [code-design]

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 回答
653 浏览

javascript - Javascript 从代码中的一处进行装饰

我面临以下代码设计问题:

我需要在我的网站上跟踪一些 ajax 操作,并且我有一个reachGoal(TARGET_NAME)分析功能,我需要将其插入到我想要跟踪的每个功能中:

我想要的是能够从一个地方管理所有目标,如下所示:

是否有任何模式或技术来实现这一目标?

0 投票
1 回答
45 浏览

object - 我应该把这个对象属性/属性放在哪里

我正在创建一个测试程序。我现在拥有的三个主要对象是测试、问题和答案。我在数据库中有三个表,测试、问题和答案以及从问题到测试的 FK 以及从答案到问题的外键。作为问题表的一部分,我有一个名为 correct_answer_seq_num 的列,它存储作为该问题正确答案的答案的 seq_num (唯一标识符)。我决定把这个属性放在问题表中,因为只有一个答案可以是正确答案(对于这个特定的测试。我知道有些测试不是这样),如果我把它放在答案表中,那么您可以将所有答案标记为正确。

我遇到的问题是我应该把这个属性放在哪个对象中。它并不是问题的真正属性,它更多的是答案的属性,但我仍然认为为了数据完整性,它应该在问题类中。

我是不是太看重这个了,如果不是,我应该把财产放在哪里。

没关系,但我使用的是 C#

谢谢!!

0 投票
1 回答
428 浏览

ruby-on-rails - 控制器中的逻辑过多与模型相互调用

我在处理一个小型应用程序时遇到了代码设计问题。(顺便说一句,我是初学者)

在功能方面,有一张桌子列表,每张桌子有 2 个座位。如果两个玩家坐在同一张桌子上,那么游戏就开始了。

对于这一部分,我有一个表控制器、一个表模型和一个游戏状态模型(创建游戏状态意味着游戏已经开始)。

当用户坐下时,它会触发一个由表格控制器处理的 ajax 请求,该请求会调用表格模型中的适当方法进行坐下。如果桌子模型发现两个座位都坐满了,游戏就开始了,这是棘手的部分。

我不想让表格模型调用游戏状态模型,因为它感觉很混乱,并且以后跟踪谁调用游戏状态模型可能会变得困难。所以我让表模型返回一个 :success=>true 哈希给表控制器,表控制器决定是否调用游戏状态模型。

但后来我意识到我正在将逻辑放入控制器中,根据 Rails 3 Way,这是一个禁忌。

比我更有经验的人能告诉我什么可以做得更好吗?

我也遇到“如果用户断开连接则放弃游戏”的问题。目前,用户拉动表控制器是为了让我的应用知道他仍然连接。让那部分处理游戏没收似乎很尴尬和耦合。

此外,我让 javascript 代码为每种类型的资源执行一次 setInterval 拉取,以尝试保持模块化。但结果,我每间隔发出 6-7 个不同的 AJAX 请求。这似乎效率低下。

0 投票
1 回答
490 浏览

uml - 谁拥有序列图中的方法?

假设我们有图表:

示例序列图

我很想知道拥有这些方法的图表是否知道它。

例如:是pickup一种方法Waiter吗?那么serve food是一种方法Patron吗?

更一般地说,箭头是否显示方法的所有者?

0 投票
5 回答
2365 浏览

java - 先验证还是尝试捕获?

假设我有一个看起来像这样的函数:

在保存到数据库之前,我必须进行各种验证。我在我的主程序中可以做的是这样的:

有了这个,我确信所有数据在保存到数据库之前都必须通过所有所需的验证。但是,这意味着该功能saveBooking()密切依赖于验证方法。每次我想打电话saveBooking()时,我都必须确保我不会忘记调用验证。

或者,我可以将所有验证放在函数本身中,这样我所要做的就是调用该方法,一切都会得到处理。但是,为了独立处理所有错误,我必须让函数抛出异常并在主程序中捕获。它应该看起来像这样:

这也意味着我必须自己创建多个异常。好消息是我不必担心我必须事先进行哪些验证。

有了这些,我不确定哪一个是最好的代码设计。我个人更喜欢第一种方法,它更具可读性,但它相互依赖太多,当我需要在很多地方使用它时,情况会变得更糟。请指教!

0 投票
5 回答
112 浏览

c# - 支持和反对对象处理自己的持久性的原因

我正在研究使用独立存储在 Windows Phone 中进行持久性建模的不同选项。我想出的想法之一是每个对象处理自己的(当然是有意义的)持久性的概念,而不是为了保存对象而创建存储库或其他此类实体。

我似乎找不到任何关于这种持久性方法的好信息,这让我相信我可能偶然发现了某种反模式。

有没有人以这种方式接近持久性?如果是这样,您对这种方法的支持或反对是什么。

0 投票
6 回答
599 浏览

c++ - C++对象层次依赖代码设计

我想创建两个类:object 和 object_manager,但我对它们应该如何查看/包含彼此感到困惑。我听说禁止两个标题相互包含,如果我的代码依赖项有圆圈,那么这是一个糟糕的代码设计,通常它应该像一个层次结构(城镇->房屋->家具和家具不应该知道关于城镇的存在)。

但是在这里我有 object_manager 知道并保存所有对象,并且对象应该有一个创建新对象的选项,但是他们应该调用 object_manager 这将迫使他们知道它的存在,这将在结构不好。。

这就像一个进程想通过调用操作系统系统调用来创建一个新进程,所以操作系统和进程彼此了解。

有没有办法可以在正确的代码设计中实现它,或者有时它应该是坏的?

我想也许这些对象应该有一个特殊的地方来存储他们所有的“系统调用”,并且 object_manager 会不时检查它..但也许有更好的方法。

0 投票
1 回答
22 浏览

php - 将一个描述和一个数组与数据相结合

我知道,标题没有那么有用,但我会尝试解释我在寻找什么。

我的主要问题是,我正在寻找一种简单的方法来组合两个数组。

$lang = array('de' => 'german', 'es' => 'spanish', 'nl' => 'dutch');

我有 X 个站点,应该有这样的表:

站点 Y 可能如下所示:

该表在每个站点上都可能不同,但我希望显示每种语言,即使它没有值。语言列表应该分开以便以后扩展。

可以理解吗?需要更多信息?

0 投票
4 回答
627 浏览

c++ - 一个好的设计可以完全避免铸件吗?

我想知道是否存在完全需要铸造的情况。
我在这里谈论的是类之间的转换,而不是基本类型。

强制转换(无论是像static_castor的 C++ 风格dynamic_cast,还是普通的 C 风格强制转换)是一种代码味道吗?我可以看到它有时是有帮助的,但我认为它也可以避免。强制转换是否违反任何 OOP 规则?

0 投票
1 回答
10199 浏览

c# - 如何以及何时处置/垃圾收集单例实例

我正在使用从嵌套类创建的 Singleton 实例。此实例包含一些静态集合,这些集合在处理 Singleton 时会被清除,但问题是我得到了对非空处理 Singleton 的引用,它没有被正确地垃圾收集。

我想知道何时以及如何完全处置和垃圾收集我的 Singleton 实例,以便在处置(并设置为 null)之后再次查询该实例时创建一个新实例。

我对 Singleton 实例使用以下嵌套模式:

第 1 行的问题是,在从客户端类处理 SingletonClass 后,_collection 对象变为 null,而 SingletonClass 实例即使在设置 = null 后仍保持非 null。