個人總結的一些寫JS程式碼的基本規範

zhouchao102發表於2019-08-18

平時工作中雖然有eslint這些工具幫助我們規範一下基本的程式碼,但更多的還是需要我們自身去注重一下程式碼質量,以下是我個人的一些經驗總結筆記,應該還有很多不足和優化的地方,希望大家多多指教哈,多討論

1.不要用var,能使用const不用let

2.避免隱式轉換,使用全等(===)進行判斷

3.不要寫冗餘判斷,比如

flag : a === b ? true : false     不建議
flag : a === b                      建議
複製程式碼

4.if判斷超過3個分支需優化,考慮使用策略模式

if(a === 'a'){
    title = '標題1'
} else if(a === 'b'){
    title = '標題2'
} else if(a === 'c'){
    title = '標題3'
} else {
    title = '標題4'
}

建議
const objMap = {
    a:'標題1',
    b:'標題2',
    c:'標題3',
}
title = objMap[a] || '標題4'
複製程式碼

5.不要留空程式碼塊,或空方法,如:

if(a){
   
}else{
  //業務邏輯
}
複製程式碼

6.判斷陣列是否有值 不需要 arr.lenth > 0 ,直接 arr.length

7.Array型別儘量使用forEach map等這些方法,看上去更簡潔,資料不多的情況下,和for迴圈效能,可忽略

8.從執行效率角度,能用Array解決的就不要用Object

9.遍歷物件使用Object.keys方式

10.從某物件取多個欄位時,超過3個屬性賦值最好抽成一個方法,不然看上起太冗餘了

const param = {
    name : options.name,
    phone : options.phone,
    address : options.address,
    city : options.city
}

建議

const feildArr = ['name','phone','city','address']
const param = {}
feildArr.forEach(feild => {
   param[feild] = options[feild] 
})

複製程式碼

11.如果只是普通的方法或者回撥,能用箭頭函式就用箭頭函式,不要在專案中顯式繫結或暫存this,除非特殊場景需要

12.不要在template寫大量的判斷表示式,這樣會別人看程式碼感覺很懵逼,可以在data內宣告變數,在業務方法裡進行處理和註釋,比如:

<div v-if="obj && obj.name && obj.phone && obj.addess"></div>

複製程式碼

13.多次判斷物件深層屬性時,不要增加判斷次數,對於物件巢狀過深的,最好先將物件進行快取

const openId = res && res.data && res.data.openId || ''
const codeId = res && res.data && res.data.codeId ||''

建議

if(res && res.data){
   const _data = res.data
   const openId = _data.openId || ''
   const codeId = _data.codeId || ''
}
或者
let openId = '',codeId = '';
try{
    const _data = res.data
    openId = _data.openId
    codeId = _data.codeId
} catch(e){
    
}

複製程式碼

14.需要入參傳送給後端的欄位,一定要和介面欄位統一,不然在請求傳送前,還要對params所有欄位重新賦值一遍,這樣就產生了很多冗餘程式碼

15.寫複雜業務程式碼時,最好遵循單一原則,一個方法只做一件事,方便複用

16.歡迎大家補充哈

相關文章