违反干原则的例外情况

时间:2017-02-19 21:12:20

标签: javascript backbone.js

我正在修复与丢失鼠标事件相关的错误,有两种方法可以修复它。其中一个看起来效率很高,需要一行代码更改(我知道更少的代码与效率无关)。另一个看起来更好的代码可读性&文档,但它违反了DRY原则。

这是我的javascript代码:

function() {
  //some code here was removed
  events: {
    'tap tbody.classX': 'triggerTap'
  }
}

triggerTap: function(e) {
  console.log('do your job');
}

首先通过添加一个触发相同方法的鼠标事件监听器来建议修复,点击事件触发。

function() {
  events: {
    'tap tbody.classX': 'triggerTap',
    'click tbody.classX': 'triggerTap'
  }
}

通过添加另一个与triggerMouseClick

完全相同的方法(triggerTap)进行第二次建议修复
function() {
  events: {
    'tap tbody.classX': 'triggerTap',
    'click tbody.classX': 'triggerMouseClick'
  }
}

//triggerTap method
triggerTap: function(e) {
  console.log('do your job');
}

//trigger mouse click
triggerMouseClick: function(e) {
  console.log('do your job');

}

1 个答案:

答案 0 :(得分:2)

添加另一个执行相同操作的功能是没有意义的。这就是代码重复。

另一方面,在鼠标点击时调用一个名为triggerTap的函数也是不可读的。

这里要做的正确的事情是将triggerTap重命名为有意义的名称,这对于两者都有意义,例如triggerTapAndClick或更好的某些东西,指的是点击和鼠标点击的操作。例如:

function() {
  events: {
    'tap tbody.classX': 'openContactsList',
    'click tbody.classX': 'openContactsList'
  }
}

openContactsList: function(e) {
  console.log('do your job');
}