2017-02-19 52 views
-3

我正在修復與缺少鼠標事件相關的錯誤,並且有兩種方法可以修復它。其中一個看起來有效率,需要一行代碼更改(我知道較少的代碼與效率無關)。另一個看起來更好的代碼可讀性&文件,但它違反乾燥原則。違反乾燥原則的例外

這是我的JavaScript代碼:

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

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

首先建議的修復通過將鼠標事件偵聽觸發相同的方法,抽頭事件觸發器。通過加入另一種方法(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'); 

} 
+0

您的'函數'語法無效。您似乎將對象文字的功能混淆。 – 2017-02-20 02:25:41

回答

2

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

第二建議的修復有一個在附加其它功能,做同樣的事情是沒有意義的。這是代碼重複。

另一方面,在鼠標單擊時調用一個名爲triggerTap的函數也是不可讀的。

這裏要做的正確的事情是將triggerTap重命名爲一個有意義的名稱,這對於兩者都有意義,例如triggerTapAndClick或更好的引用點擊和鼠標單擊操作的內容。例如:

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

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