前言
良好的JavaScript書寫習慣的優點不言而喻,今天彬Go向大家推薦Dojo Javascript 編程規范,相當不錯的 Javascript 編程風格規范,建議大家可以借鑒一下此規范編寫 Javascript。感謝i.feelinglucky的翻譯。
序
Any violation to this guide is allowed if it enhances readability.
所有的代碼都要變成可供他人容易閱讀的。
快讀參考
核心 API 請使用下面的風格:
| 結構 | 規則 | 注釋 |
| 模塊 | 小寫 | 不要使用多重語義(Never multiple words) |
| 類 | 駱駝 | |
| 公有方法 | 混合 | 其他的外部調用也可以使用 lower_case(),這樣的風格 |
| 公有變量 | 混合 | |
| 常量 | 駱駝 或 大寫 |
下面的雖然不是必要的,但建議使用:
| 結構 | 規則 |
| 私有方法 | 混合,例子:_mixedCase |
| 私有變量 | 混合,例子:_mixedCase |
| 方法(method)參數 | 混合,例子:_mixedCase, mixedCase |
| 本地(local)變量 | 混合,例子:_mixedCase, mixedCase |
命名規范
1.變量名稱 必須為 小寫字母。
2.類的命名使用駱駝命名規則,例如:
Account, EventHandler
3.常量 必須 在對象(類)或者枚舉變量的前部聲明。枚舉變量的命名必須要有實際的意義,并且其成員 必須 使用駱駝命名規則或使用大寫:
4.簡寫單詞 不能使用 大寫名稱作為變量名:
getInnerHtml(), getXml(), XmlDocument
5.方法的命令 必須 為動詞或者是動詞短語:
obj.getSomeValue()
6.公有類的命名 必須 使用混合名稱(mixedCase)命名。
7.CSS 變量的命名 必須 使用其對應的相同的公共類變量。
8.私有類的變量屬性成員 必須 使用混合名稱(mixedCase)命名,并前面下下劃線(_)。例如:
9.變量如果設置為私有,則前面 必須 添加下劃線。
this._somePrivateVariable = statement;
10.通用的變量 必須 使用與其名字一致的類型名稱:
setTopic(topic) // 變量 topic 為 Topic 類型的變量
11.所有的變量名 必須 使用英文名稱。
12.變量如有較廣的作用域(large scope),必須使用全局變量;此時可以設計成一個類的成員。相對的如作用域較小或為私有變量則使用簡潔的單詞命名。
13.如果變量有其隱含的返回值,則避免使用其相似的方法:
getHandler(); // 避免使用 getEventHandler()
14.公有變量必須清楚的表達其自身的屬性,避免字義含糊不清,例如:
MouseEventHandler
,而非 MseEvtHdlr。
請再次注意這條規定,這樣做得的好處是非常明顯的。它能明確的表達表達式所定義的含義。例如:
dojo.events.mouse.Handler // 而非 dojo.events.mouse.MouseEventHandler
15.類/構造函數 可以使用 擴展其基類的名稱命名,這樣可以正確、迅速的找到其基類的名稱:
EventHandler
UIEventHandler
MouseEventHandler
基類可以在明確描述其屬性的前提下,縮減其命名:
MouseEventHandler as opposed to MouseUIEventHandler.
特殊命名規范
術語 “get/set” 不要和一個字段相連,除非它被定義為私有變量。
前面加 “is” 的變量名 應該 為布爾值,同理可以為 “has”, “can” 或者 “should”。
術語 “compute” 作為變量名應為已經計算完成的變量。
術語 “find” 作為變量名應為已經查找完成的變量。
術語 “initialize” 或者 “init” 作為變量名應為已經實例化(初始化)完成的類或者其他類型的變量。
UI (用戶界面)控制變量應在名稱后加控制類型,例如: leftComboBox, TopScrollPane。
復數必須有其公共的名稱約定(原文:Plural form MUST be used to name collections)。
帶有 “num” 或者 “count” 開頭的變量名約定為數字(對象)。
重復變量建議使用 “i”, “j”, “k” (依次類推)等名稱的變量。
補充用語必須使用補充詞,例如: get/set, add/remove, create/destroy, start/stop, insert/delete, begin/end, etc.
能縮寫的名稱盡量使用縮寫。
避免產生歧義的布爾變量名稱,例如:
isNotError, isNotFound 為非法
錯誤類建議在變量名稱后加上 “Exception” 或者 “Error”。
方法如果返回一個類,則應該在名稱上說明返回什么;如果是一個過程,則應該說明做了什么。
文件
縮進請使用 4 個空白符的制表位。
如果您的編輯器支持 文件標簽_(file tags),請加添如下的一行使我們的代碼更容易閱讀:
// vim:ts=4:noet:tw=0:
譯注:老外用 VIM 編輯器比較多,此條可以選擇遵循。
代碼折疊必須看起來是完成并且是合乎邏輯的:
var o = someObject.get(
Expression1,
Expression2,
Expression3
);
注:表達式的縮進與變量聲明應為一致的。
注:函數的參數應采用明確的縮進,縮進規則與其他塊保持一致。
變量
布局
塊
普通代碼段 應該 看起來如下:
IF 語句 應該 看起來像這樣:
FOR 語句 應該 看起來像這樣:
WHILE 語句 應該 看起來像這樣:
DO … WHILE 語句 應該 看起來像這樣:
SWITCH 語句 應該 看起來像這樣:
TRY … CATCH 語句 應該 看起來像這樣:
單行的 IF 主站蜘蛛池模板: 永修县| 桃园市| 凌源市| 大渡口区| 南川市| 招远市| 绍兴县| 延安市| 武城县| 长阳| 北京市| 盖州市| 蒙阴县| 萝北县| 江都市| 武夷山市| 江津市| 根河市| 大名县| 金川县| 桦南县| 昆明市| 宜兴市| 师宗县| 丹棱县| 清水河县| 丰宁| 萝北县| 吉林省| 木里| 洛隆县| 泽库县| 陵水| 宽甸| 阳西县| 佳木斯市| 安乡县| 苏尼特右旗| 平和县| 息烽县| 恩施市|