概述
我個人很看重代碼規范,因為代碼是寫給別人看的,按規范寫別人才更容易理解。之前苦於沒有代碼規范的資料,現在在github上面看到了騰訊Alloy團隊的代碼規范,於是學習了一下,並記錄下我自己還沒怎么注意的地方,供以后開發時參考,相信對其他人也有用。
順便說下,這里是騰訊Alloy團隊推薦的sublime3配置。
命名規則
- 文件命名全部采用小寫方式, 以下划線分隔,有復數結構時,要采用負數命名法。
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;
}
}
