拥有更多的全局对象构造函数还是将它们组合成一个对象更好?

时间:2017-10-04 00:38:21

标签: javascript

我可能已经解决了一些错误,但这就是我要问的问题:

其中哪些在语义上更好?

对类似对象使用多个构造函数,使用前缀(Parent)对它们进行分组。

function ParentChildA (val) {
    this.val = val+'a';
}

function ParentChildB (val) {
    this.val = val+'b';
}

new ParentChildA (val);
new ParentChildB (val);

或者,使用空的Parent对象将它们分组到一个对象下。

Parent = {};

Parent.childA = function(val)  {
    this.val = val+'a';
}

Parent.childB = function(val)  {
    this.val = val+'b';
}

new Parent.ChildA (val);
new Parent.ChildB (val);

为了分组而创建一个空容器对象是不是很糟糕?我想成为一个优秀的小编码器,不会污染全球命名空间,因为大孩子们说它很糟糕。

1 个答案:

答案 0 :(得分:0)

这实际上取决于你在做什么。对象应始终构建为可维护性和可用性,因此对于您的特定情况,请问自己:哪个更容易使用和维护?

在任何语言的对象设计方面都没有明确而快速的确定答案,但在规划结构时需要考虑一些一般原则。

  1. 你想要直观地保持相似的东西。
  2. 您不希望任何对象具有如此多的复杂性:
    1. 寻找子对象需要很长时间。
    2. 孩子的名字开始发生碰撞。
  3. 您希望对象之间的消息简单且最小。这意味着如果您说“人”对象,您可能希望拥有person.run()person.walk(),而不必将对象作为消息传递给另一个对象,如run(person)和{ {1}}。 OTOH你可能有这么多孩子的人物,有walk(person)person.movement.run()是有意义的,所以人的事物清单大小合适。
  4. 理想情况下,您希望停留几分钟,集体讨论并计划您的对象应该做的事情并用于设计符合该用例的内容。不可避免地会有添加和更改,但只是尝试计划一点有助于限制重构。

    如果你问的是性能差异,那不是我的专业知识,但总的来说,对于大多数事情我们现在有足够的处理能力可以忽略不计。

    如果您想要更深入的设计指南,那里有很多好的资源。 Bob Martin's Principles of OOD is a good place to start