违反 Dry 原则的例外

Exceptions to violate Dry principle

我正在修复与丢失的鼠标事件相关的错误,有两种方法可以修复它。其中一个看起来效率很高,需要更改一行代码(我知道代码少与效率无关)。另一个在代码可读性和文档方面看起来更好,但它违反了 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');

}

添加另一个功能相同的功能毫无意义。那就是代码重复。

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

这里正确的做法是将 triggerTap 重命名为一个有意义的名称,对两者都有意义的名称,例如 triggerTapAndClick 或更好的名称,指的是点击和鼠标单击的操作做。例如:

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

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