概述
我我的很看重代碼規範,由於代碼是寫給別人看的,按規範寫別人才更容易理解。以前苦於沒有代碼規範的資料,如今在github上面看到了騰訊Alloy團隊的代碼規範,因而學習了一下,並記錄下我本身還沒怎麼注意的地方,供之後開發時參考,相信對其餘人也有用。css
順便說下,這裏是騰訊Alloy團隊推薦的sublime3配置。html
命名規則
- 文件命名所有采用小寫方式, 如下劃線分隔,有複數結構時,要採用負數命名法。
HTML
- 屬性名,使用雙引號,不要使用單引號;全小寫,用中劃線作分隔符。
- 不要在自動閉合標籤結尾處使用斜線。
- doctype大寫。
- 在html標籤上加上lang屬性。
- 聲明一個明確的字符編碼,一般指定爲'UTF-8'。
- 用meta標籤指定頁面應該用什麼版本的IE來渲染(好比content="IE=Edge");
- 在引入CSS和JS時不須要指明type。
- 屬性應該按照特定的順序出現以保證易讀性,class>id>name>data-*>src等
- boolean屬性不須要聲明取值。
- 避免用js生成標籤。
- 在編寫HTML代碼時,須要儘可能避免多餘的父節點。
css,scss
- 屬性聲明順序。
- 如下幾種狀況須要換行:(1)'{'後和'}'前(2)每一個屬性獨佔一行(3)多個規則的分隔符','後。
- 註釋統一用'/* */'(scss中也不要用'//')。
- 最外層統一使用雙引號。
- 類名使用小寫字母,以中劃線分隔;id採用駝峯式命名;scss中的變量、函數、混合、placeholder採用駝峯式命名。
- 顏色16進制用小寫字母;顏色16進制儘可能用簡寫。
- 除了margin和padding,都不須要使用屬性簡寫,儘可能分開聲明。
- 儘可能將媒體查詢的規則靠近與他們相關的規則,不要放進獨立樣式文件,也不要扔在底部。
- @import 引入的文件不須要開頭的'_'和結尾的'.scss'。
- 聲明順序:@extend;不包含 @content 的 @include;包含 @content 的 @include;自身屬性;嵌套規則。
- 去掉小數點前面的0。
- 屬性值'0'後面不要加單位。
- 同個屬性不一樣前綴的寫法須要在垂直方向保持對齊,無前綴的標準屬性應該寫在有前綴的屬性後面。
- 用 border: 0; 代替 border: none;
- 發佈的代碼中不要有 @import。
- 儘可能少用'*'選擇器。
JavaScript
- return後面須要加分號。
- 這些關鍵字後要留一個空格:if, else, for, while, do, switch, case, try, catch, finally, with, return, typeof。
- '}'前須要換行。
- 單行註釋縮進與下一行代碼保持一致。
- 多行註釋最少三行, '*'後跟一個空格。
- 最外層統一使用單引號。
- 這些字符串一概按這裏的寫法,不小寫或大寫:'ID','URL','Android', 'iOS'。
- 構造函數,大寫第一個字母
- 常量全大寫,用下劃線鏈接。
- 對象屬性名不須要加引號;數組、對象最後不要有逗號。
- 永遠不要直接使用undefined進行變量判斷;使用typeof和字符串'undefined'對變量進行判斷。
- for-in裏必定要有hasOwnProperty的判斷。
- 不要在同個做用域下聲明同名變量。
- 不要在一些不須要的地方加括號,例:delete(a.b)。
- 數組中不要存在空元素。(有疑問???)
- 換行符統一用'LF',即'/n'。
- 對上下文this的引用只能使用'_this', 'that', 'self'其中一個來命名。
- 一個函數做用域中全部的變量聲明儘可能提到函數首部,用一個var聲明,不容許出現兩個連續的var聲明。好比:
function doSomethingWithItems(items) { // use one var var value = 10, result = value + 10, i, len; for (i = 0, len = items.length; i < len; i++) { result += 10; } }