Oop ';应该';实例变量或属性是否共享getter/setter

Oop ';应该';实例变量或属性是否共享getter/setter,oop,setter,code-duplication,Oop,Setter,Code Duplication,假设我有一个JavaScript对象: myObject = { oneArray: [], otherArray: [], setOneArray: function(){ /*some code that sets the contents*/ } setOtherArray: function(){ /*again code that sets contents*/ } } 现在让我们假设,就目前的情况而

假设我有一个JavaScript对象:

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

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

    setOtherArray: function(){
        /*again code that sets contents*/
    }
}
现在让我们假设,就目前的情况而言,两个“setter”的代码是相同的。我在重复工作和代码,没有两种方法。我可以为两者编写一个单独的函数,并在编码(或复制/粘贴)中保存多长时间。在可预见的未来,我没有理由以任何不同的方式对待这些问题——那么这从根本上说是一种糟糕的做法吗


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

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


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

您将如何指定要设置的数组?传递一个变量?我认为这将表明它们需要两种不同的功能。通常,getter/setter与属性之间有1:1的关系,字段名与getter/setter(array/set_array,otherArray/set_otherArray)名称之间有某种约定。如果setter非常重要,并且希望避免重复,则应包装数组(或将其添加到原型中)setter方法。这负责隐式传递实例。