js和css的代碼規(guī)范
一外莲、為什么要有規(guī)范
要首先排除一個誤區(qū),規(guī)范是:
1兔朦、跟性能無關(guān)
2偷线、跟功能無關(guān)
3、跟結(jié)果無關(guān)
所謂代碼規(guī)范是用來提高整個團(tuán)隊的開發(fā)效率沽甥,減少溝通成本声邦,統(tǒng)一化代碼編寫方案,減少團(tuán)隊gap摆舟,保留團(tuán)隊最佳實踐的團(tuán)隊建設(shè)的必須項之一翔忽。因此在制定規(guī)范之前英融,首先要明確規(guī)范是用來做什么的,確保團(tuán)隊成員心里能夠有完全按照規(guī)范編寫代碼的意識歇式。
二驶悟、規(guī)范的特點
1、易讀性
這是規(guī)范首要追求的特性之一材失,易讀性是保證代碼可供團(tuán)隊快速痕鳍,準(zhǔn)確閱讀的首要保障。是制定規(guī)范最重要的目標(biāo)龙巨。
保證代碼易讀性需要注意的方面:
空格:
又例如:
中?文English數(shù)字01混合時
中?文 English 數(shù)字 01 混合時
可見加了空格之后笼呆,代碼的結(jié)構(gòu)更清晰,視覺感受更優(yōu)旨别,更容易把兩者抽離出來诗赌,提高代碼的可讀性。心理學(xué)有一個相關(guān)性的概念秸弛,就是說铭若,如果兩個獨立的事物在很短的時間內(nèi)或者同時出現(xiàn),人們下意識的就會認(rèn)為這兩件事物是有相關(guān)性的递览。因此在代碼中叼屠,如果缺少空格,人眼就很容易將兩段不同的代碼認(rèn)為是相關(guān)的绞铃,這樣就需要動用額外的精力去判斷兩段代碼之間的關(guān)系镜雨,造成不必要的成本。
空格的場景:注釋符號與注釋內(nèi)容之間儿捧,css和object屬性和屬性值之間荚坞,操作符 = + -? && || (or more)兩邊...等等。
編碼習(xí)慣:
編碼習(xí)慣是在保證易讀性的前提下菲盾,加入了團(tuán)隊和個人的一些特點颓影,所形成的一系列編碼規(guī)范。
比如一些css的屬性順序等亿汞。比如谷歌是按照屬性名的首字母進(jìn)行a-z的排序來編寫瞭空,有些是按照定位-布局-大小-內(nèi)容-修飾等分類來編寫揪阿。
每一種編碼習(xí)慣孰優(yōu)孰劣見仁見智疗我,但只要保證整個團(tuán)隊有一致的編碼習(xí)慣就沒問題。
代碼命名:
這是保證代碼易讀性里南捂,最重要的事情之一吴裤,每個好的代碼規(guī)范都會對代碼命名有著嚴(yán)苛的要求,命名可以分為以下幾類:
例如
```
?myName = "";?
studentNames = [];?
class CollageStudent {};
WIDTH = 200; HEIGHT = 300;
handleButtonClick() {};
canDelete = false; hasCar = true;
obj.__setName = () => {} ;
```
其實在命名的時候溺健,代碼的可讀性有時比代碼的簡潔性更重要麦牺,比如createUserByNameAndEmail(name, email)這樣的函數(shù),盡管很長,但是一眼就容易讓人看懂這個函數(shù)的作用剖膳。
2. 精簡
精簡的目的是能省則省魏颓,例如google里面對CSS屬性值精簡的例子:
例子太多,就不一一舉例子了吱晒。
3. 嚴(yán)謹(jǐn)
這幾年TS的火熱甸饱,又把靜態(tài)語言帶入到各個JS語言開發(fā)者的視野當(dāng)中,TS由于它的類型檢查的機制仑濒,使得它對于一些核心業(yè)務(wù)代碼叹话,框架,組件等嚴(yán)謹(jǐn)性要求比較高的場合更加適合墩瞳,減少一些不必要bug驼壶。不過過于追求嚴(yán)謹(jǐn)也會給團(tuán)隊帶來不必要的麻煩,在大多數(shù)敏捷開發(fā)的場合喉酌,動態(tài)類型的JS更加適合热凹。
三、最重要的一點
用什么代碼規(guī)范不重要瞭吃,最重要的是碌嘀,團(tuán)隊能夠統(tǒng)一代碼規(guī)范,能夠保證團(tuán)隊成員每個人能夠編寫出同樣規(guī)則的代碼歪架。