2

例如:開發JavaScript庫時應該使用命名函數嗎?

module.exports = { 
    myLibraryFunction: function myLibraryFunction() { 
    ... 
    } 
} 

的缺點是顯而易見的。這不是很DRY,這意味着如果你不小心,它很容易變得不同步。它也使您的代碼更加冗長一些。

那麼有什麼優勢?這種折衷是否值得?

+0

返回命名函數的主要優點是它更容易調試。如果您不按照我的經驗命名它們,調試器會顯示匿名函數中存在錯誤。儘管如此,這可能高度依賴於您如何處理模塊中的錯誤。 – Eclecticist 2015-02-05 20:27:02

回答

1

我在編寫JS庫時使用這種方法。最大的好處是像Chrome調試器這樣的工具將爲您的函數定義一個明確的名稱,而不是基於包含該函數的變量名稱的「匿名」或由函數路徑組成的某個名稱。但是,如果您在調試時不關心方法名稱,那麼它真的歸結爲一個品味問題。如果你想縮小生成的JS代碼,那麼像這樣的命名元素無論如何都會被剝離出來。

至於DRY這種方法如何,請考慮重複出現的名稱彼此相鄰。快速複製&粘貼是保持它們同步所需的一切。如果JS包含一個功能,該功能可以根據在創建時分配給它的變量(或者至少是動態地重新分配函數名稱的能力)來命名函數。不幸的是,這是JS允許我們命名這些匿名函數的唯一方法。

相關問題