javaScript 整潔代碼最佳實(shí)踐

變量

讓變量名說明,這個變量存儲的內(nèi)容是什么
demo.png
  • 代碼邏輯
    • candidates 應(yīng)征人員,這里表示參加考試的學(xué)生,是一個數(shù)組
    • answerSheets 答題卡,這里表示這次考試收到的所有答題卡,是一個數(shù)組
    • 這段代碼想做的事情是,將答題卡發(fā)給相應(yīng)的考生
  • 問題
    • 問題,出現(xiàn)在236行,tempFormatMap這個變量,沒有表達(dá)出這個變量到底存儲的是什么內(nèi)容
    • 改成id2CandidateMap,會讓代碼更加易懂一些
  • 最后,為了讓變量更加容易理解一些,建議盡量不采用縮寫
不要增加沒有用的名詞
// DON'T
let nameString  
let theUsers

// DO
let name  
let users 

  • 在上面的例子中,提到盡量不要用縮寫單詞,這會產(chǎn)生一個副作用,就是,變量名過長
  • 為了不讓變量名長到喪心病狂的地步,在命名變量的時候不要出現(xiàn)任何無效的單詞。如:
    • 冠詞
    • 數(shù)據(jù)類型
    • 。。。

函數(shù)

函數(shù)名稱應(yīng)該是一個動詞或者動賓短語,通過函數(shù)名稱和參數(shù)名稱以及順序表達(dá)出這個函數(shù)的目的,注釋是一個比較low的做法
// DON'T
/**
 * Invite a new user with its email address
 * @param {String} user email address
 */
function inv (user) { /* implementation */ }

// DO
function inviteUser (emailAddress) { /* implementation */ }  

  • 上面兩段代碼表達(dá)的意思差不多,但是明顯后者更優(yōu)美一些,也更加實(shí)用一些
  • 方法2,可以在上層邏輯中直接看出函數(shù)的作用,而不需要跟進(jìn)一步,打斷原有的思路
不要使用長的參數(shù)列表,使用es6的解構(gòu)來聲明函數(shù)參數(shù)

// DON'T
function getRegisteredUsers (fields, include, fromDate, toDate) { /* implementation */ }  


// DO
function getRegisteredUsers ({ fields = [], include = [], fromDate = '2017-12-1', toDate = '2017-12-1' }) {
    /* implementation */ 
 }  

  • ES6的解構(gòu)語法名用于函數(shù)列表的優(yōu)點(diǎn)有兩個
    • 未來調(diào)整參數(shù)的順序,不會對污染調(diào)用方
    • 避免在函數(shù)開始處,寫一大堆惡心的默認(rèn)值賦值
減少函數(shù)的副作用

// DON'T
function addItemToCart (cart, item, quantity = 1) {  
  const alreadyInCart = cart.get(item.id) || 0
  cart.set(item.id, alreadyInCart + quantity)
  return cart
}

// DO
// not modifying the original cart
function addItemToCart (cart, item, quantity = 1) {  
  const cartCopy = new Map(cart)
  const alreadyInCart = cartCopy.get(item.id) || 0
  cartCopy.set(item.id, alreadyInCart + quantity)
  return cartCopy
}

  • 上述函數(shù),將參數(shù)修改了,調(diào)用的小伙伴就會很困惑
  • 函數(shù)內(nèi)部,不應(yīng)該影響對上層調(diào)用者的行為做任何假設(shè)
讓函數(shù)在文件中排列的順序合理一些,需要先讀的放在前面
  • 在排列函數(shù)的時候,應(yīng)該注意函數(shù)的順序
  • 比如:react的組件,起碼應(yīng)該生命周期的順序排練函數(shù)

引用:https://blog.risingstack.com/javascript-clean-coding-best-practices-node-js-at-scale

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容