構建軟件設計的方法有兩種:一種是把軟件做得很簡單以至于明顯找不到缺陷;另一種是把它做得很復雜以至于找不到明顯的缺陷。
編碼規(guī)范
編碼規(guī)范包括編程風格、編程實踐、文件和目錄的規(guī)劃以及注釋等方面。
編程風格
第一章 基本的格式化
1.1 縮進層級
- 使用制表符(tab)進行縮進
- 優(yōu)點
制表符和縮進層級一一對應,符合邏輯;
文本編輯器可以配置制表符的展現(xiàn)長度; - 缺點
系統(tǒng)對制表符的解釋不一致;
- 優(yōu)點
- 使用空格符進行縮進
- 優(yōu)點
在所有的系統(tǒng)和編輯器中,文件的展現(xiàn)格式表現(xiàn)一致; - 缺點
部分文本編輯器,不支持設置Tab,手動空格縮進非常原始;
- 優(yōu)點
1.2 語句結尾
以分號結尾
1.3 行的長度
單行長度不超過80-100個字符。(不同語言規(guī)范有所差異)
1.4 換行
在運算符后換行,下一行增加兩個層級的縮進。
1.5 空行
使用空行分割,確保語義有關聯(lián)的代碼展現(xiàn)在一起,增強可讀性。
- 方法之間
- 在方法中的局部變量和第一條語句之間
- 在單行或多行注釋之前
- 在方法內的邏輯片段之間插入空行,提高可讀性。
1.6 命名
JavaScript語言的核心ECMAScript,即是遵照了駝峰式大小寫(Camel Case)
1.6.1 變量和函數(shù)
變量名前綴應當是名詞
函數(shù)名前綴應當是動詞
1.6.2 常量
使用大寫字母和下劃線來命名,下劃線用以分割單詞。
1.6.3 構造函數(shù)
在JavaScript中,構造函數(shù)是前面冠以new運算符的函數(shù),用來創(chuàng)建對象。
構造函數(shù)的命名遵照大駝峰命名法(Pascal Case)
- Pascal Case以大寫字母開始;
- Camel Case以小寫字母開始;
1.7 直接量
1.7.1 字符串
字符串可以用雙引號括起來,也可以用單引號括起來。
多行字符串:
- ES5
使用字符串連接符(+)將字符串分成多份。 - ES6
使用模板字符串
1.7.2 數(shù)字
在JavaScript中的數(shù)字類型只有一種,因為所有數(shù)字形式(整數(shù)和浮點數(shù))都存儲為相同的數(shù)據(jù)類型。
- 不要省略小數(shù)點之前或之后的數(shù)字。
- 不推薦使用八進制數(shù)字寫法
1.7.3 null
將null當做對象的占位符
應當使用null:
- 用來初始化一個變量,這個變量可能賦值為一個對象;
- 用來和一個已經(jīng)初始化的變量比較,這個變量可以是也可以不是一個對象;
- 當函數(shù)的參數(shù)期望是對象時,用作參數(shù)傳入;
- 當函數(shù)的返回值期望是對象時,用作返回值傳出。
不應當使用null:
- 不要使用null來檢測是否傳入了某個參數(shù);
- 不要用null來檢測一個未初始化的變量;
1.7.4 undefined
避免使用undefined
1.7.5 對象直接量
對象直接量允許將所有的屬性都括在一對花括號內。
1.7.6 數(shù)組直接量
使用兩個方括號將數(shù)組初始元素括起來。