js和css的代碼規(guī)范
一、為什么要有規(guī)范
要首先排除一個(gè)誤區(qū),規(guī)范是:
1、跟性能無(wú)關(guān)
2、跟功能無(wú)關(guān)
3、跟結(jié)果無(wú)關(guān)
所謂代碼規(guī)范是用來(lái)提高整個(gè)團(tuán)隊(duì)的開(kāi)發(fā)效率,減少溝通成本,統(tǒng)一化代碼編寫方案,減少團(tuán)隊(duì)gap,保留團(tuán)隊(duì)最佳實(shí)踐的團(tuán)隊(duì)建設(shè)的必須項(xiàng)之一。因此在制定規(guī)范之前,首先要明確規(guī)范是用來(lái)做什么的,確保團(tuán)隊(duì)成員心里能夠有完全按照規(guī)范編寫代碼的意識(shí)。
二、規(guī)范的特點(diǎn)
1、易讀性
這是規(guī)范首要追求的特性之一,易讀性是保證代碼可供團(tuán)隊(duì)快速,準(zhǔn)確閱讀的首要保障。是制定規(guī)范最重要的目標(biāo)。
保證代碼易讀性需要注意的方面:
空格:

又例如:
中?文English數(shù)字01混合時(shí)
中?文 English 數(shù)字 01 混合時(shí)
可見(jiàn)加了空格之后,代碼的結(jié)構(gòu)更清晰,視覺(jué)感受更優(yōu),更容易把兩者抽離出來(lái),提高代碼的可讀性。心理學(xué)有一個(gè)相關(guān)性的概念,就是說(shuō),如果兩個(gè)獨(dú)立的事物在很短的時(shí)間內(nèi)或者同時(shí)出現(xiàn),人們下意識(shí)的就會(huì)認(rèn)為這兩件事物是有相關(guān)性的。因此在代碼中,如果缺少空格,人眼就很容易將兩段不同的代碼認(rèn)為是相關(guān)的,這樣就需要?jiǎng)佑妙~外的精力去判斷兩段代碼之間的關(guān)系,造成不必要的成本。
空格的場(chǎng)景:注釋符號(hào)與注釋內(nèi)容之間,css和object屬性和屬性值之間,操作符 = + -? && || (or more)兩邊...等等。
編碼習(xí)慣:
編碼習(xí)慣是在保證易讀性的前提下,加入了團(tuán)隊(duì)和個(gè)人的一些特點(diǎn),所形成的一系列編碼規(guī)范。
比如一些css的屬性順序等。比如谷歌是按照屬性名的首字母進(jìn)行a-z的排序來(lái)編寫,有些是按照定位-布局-大小-內(nèi)容-修飾等分類來(lái)編寫。

每一種編碼習(xí)慣孰優(yōu)孰劣見(jiàn)仁見(jiàn)智,但只要保證整個(gè)團(tuán)隊(duì)有一致的編碼習(xí)慣就沒(méi)問(wèn)題。
代碼命名:
這是保證代碼易讀性里,最重要的事情之一,每個(gè)好的代碼規(guī)范都會(huì)對(duì)代碼命名有著嚴(yán)苛的要求,命名可以分為以下幾類:

例如
```
?myName = "";?
studentNames = [];?
class CollageStudent {};
WIDTH = 200; HEIGHT = 300;
handleButtonClick() {};
canDelete = false; hasCar = true;
obj.__setName = () => {} ;
```
其實(shí)在命名的時(shí)候,代碼的可讀性有時(shí)比代碼的簡(jiǎn)潔性更重要,比如createUserByNameAndEmail(name, email)這樣的函數(shù),盡管很長(zhǎng),但是一眼就容易讓人看懂這個(gè)函數(shù)的作用。
2. 精簡(jiǎn)
精簡(jiǎn)的目的是能省則省,例如google里面對(duì)CSS屬性值精簡(jiǎn)的例子:

例子太多,就不一一舉例子了。
3. 嚴(yán)謹(jǐn)
這幾年TS的火熱,又把靜態(tài)語(yǔ)言帶入到各個(gè)JS語(yǔ)言開(kāi)發(fā)者的視野當(dāng)中,TS由于它的類型檢查的機(jī)制,使得它對(duì)于一些核心業(yè)務(wù)代碼,框架,組件等嚴(yán)謹(jǐn)性要求比較高的場(chǎng)合更加適合,減少一些不必要bug。不過(guò)過(guò)于追求嚴(yán)謹(jǐn)也會(huì)給團(tuán)隊(duì)帶來(lái)不必要的麻煩,在大多數(shù)敏捷開(kāi)發(fā)的場(chǎng)合,動(dòng)態(tài)類型的JS更加適合。
三、最重要的一點(diǎn)
用什么代碼規(guī)范不重要,最重要的是,團(tuán)隊(duì)能夠統(tǒng)一代碼規(guī)范,能夠保證團(tuán)隊(duì)成員每個(gè)人能夠編寫出同樣規(guī)則的代碼。