【问题标题】:'Should' instance variables or properties ever share getter/setters“应该”实例变量或属性曾经共享 getter/setter
【发布时间】:2013-06-01 04:06:59
【问题描述】:

假设我有一个 JavaScript 对象:

myObject = {
    oneArray: [],
    otherArray: [],

    setOneArray: function(){
        /*some code that sets the contents*/
    }

    setOtherArray: function(){
        /*again code that sets contents*/
    }
}

现在让我们说,就目前而言,两个“setter”的代码是相同的。我正在重复工作和代码,没有两种方法。我本可以为两者编写一个函数,并在编码(或复制/粘贴)中保存很长时间。在可预见的未来,我没有理由区别对待这些 - 那么这从根本上来说是一种不好的做法吗?

如果上下文很重要,两个数组都被推送相同类型的数据 - 字符串 - 但来自 JSON 文件的不同部分。

【问题讨论】:

  • 如何指定要设置的数组?传入变量?我认为这表明它们需要是两个不同的功能。通常,getter/setter 与属性之间存在 1:1 的关系,字段名称与 getter/setter (array/set_array, otherArray/set_otherArray) 名称之间存在某种约定。
  • 如果你的 setter 很重要,并且你想避免重复,你应该包装你的数组(或添加到它们的原型中)setter 方法。这会处理隐式传递的实例。

标签: oop setter code-duplication


【解决方案1】:

我要继续说:是的,复制代码是一种不好的做法。开发人员应该学习的首要原则之一是DRY。重复代码只会增加它们不同步的机会。

您可以做的仍然是麻烦设置器,但让它们每个只调用包含相同代码的另一个方法。如果有一天这种情况发生了变化,那么您可以摆脱常见的方法,让您的设置器在这一点上完全不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-03
    • 2017-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多