前言
良好的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.常量 必須 在對象(類)或者枚舉變量的前部聲明。枚舉變量的命名必須要有實際的意義,并且其成員 必須 使用駱駝命名規則或使用大寫:
var NodeTypes = {
Element : 1,
DOCUMENT: 2
}
4.簡寫單詞 不能使用 大寫名稱作為變量名:
getInnerHtml(), getXml(), XmlDocument
5.方法的命令 必須 為動詞或者是動詞短語:
obj.getSomeValue()
6.公有類的命名 必須 使用混合名稱(mixedCase)命名。
7.CSS 變量的命名 必須 使用其對應的相同的公共類變量。
8.私有類的變量屬性成員 必須 使用混合名稱(mixedCase)命名,并前面下下劃線(_)。例如:
var MyClass = function(){
var _buffer;
this.doSomething = function(){
};
}
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 someExpression = Expression1
+ Expression2
+ Expression3;
var o = someObject.get(
Expression1,
Expression2,
Expression3
);
注:表達式的縮進與變量聲明應為一致的。
注:函數的參數應采用明確的縮進,縮進規則與其他塊保持一致。
變量
- 變量必須在聲明初始化以后才能使用,即便是 NULL 類型。
- 變量不能產生歧義。
- 相關的變量集應該放在同一代碼塊中,非相關的變量集不應該放在同一代碼塊中。
- 變量應該盡量保持最小的生存周期。
- 循環/重復變量的規范:
- 只有循環控制塊的話,則必須使用 FOR 循環。
- 循環變量應該在循環開始前就被初始化;如使用 FOR 循環,則使用 FOR 語句初始化循環變量。
- “do … while” 語句是被允許的。
- “break” 和 “continue” 語句仍然允許使用(但請注意)。
- 條件表達式
- 應該盡量避免復雜的條件表達式,如有必要可以使用臨時布爾變量。
- The nominal case SHOULD be put in the “if” part and the exception in the “else” part of an “if” statement.
- 應避免在條件表達式中加入塊。
- 雜項
- 盡量避免幻數(Magic numbers),他們應該使用常量來代替。
- 浮點變量必須指明小數點后一位(即使是 0)。
- 浮點變量必須指明實部,即使它們為零(使用 0. 開頭)。
布局
塊
普通代碼段 應該 看起來如下:
while (!isDone){
doSomething();
isDone = moreToDo();
}
IF 語句 應該 看起來像這樣:
if (someCondition){
statements;
} else if (someOtherCondition){
statements;
} else {
statements;
}
FOR 語句 應該 看起來像這樣:
for (initialization; condition; update){
statements;
}
WHILE 語句 應該 看起來像這樣:
while (!isDone) {
doSomething();
isDone = moreToDo();
}
DO … WHILE 語句 應該 看起來像這樣:
do {
statements;
} while (condition);
SWITCH 語句 應該 看起來像這樣:
switch (condition) {
case ABC:
statements;
// fallthrough
case DEF:
statements;
break;
default:
statements;
break;
}
TRY … CATCH 語句 應該 看起來像這樣:
try {
statements;
} catch(ex) {
statements;
} finally {
statements;
}
單行的 IF 亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品亚洲精品|
国产成人午夜视频网址|
国产综合在线观看视频|
国产精品日韩在线一区|
亚洲成人激情在线|
久久综合国产精品台湾中文娱乐网|
欧美成人午夜视频|
亚洲理论在线a中文字幕|
成人黄色短视频在线观看|
九九热这里只有精品免费看|
亚洲男人av在线|
国产在线观看精品一区二区三区|
国产精品精品视频|
欧美性猛交丰臀xxxxx网站|
亚洲一区二区免费在线|
国产一区二区在线免费视频|
国产精品午夜一区二区欲梦|
成人日韩av在线|
久久韩剧网电视剧|
两个人的视频www国产精品|
亚洲福利视频在线|
91成人在线观看国产|
精品国产一区二区三区久久狼黑人|
日本久久亚洲电影|
亚洲视频一区二区三区|
亚洲激情成人网|
国产精品麻豆va在线播放|
欧美理论电影网|
精品爽片免费看久久|
国产精品激情av电影在线观看|
亚洲女同性videos|
日本一区二区在线播放|
92看片淫黄大片欧美看国产片|
少妇高潮 亚洲精品|
国产精品jvid在线观看蜜臀|
亚洲精品之草原avav久久|
欧美成人第一页|
在线观看久久av|
国产精品一香蕉国产线看观看|
这里只有精品丝袜|
精品国产一区二区在线|
青青久久av北条麻妃海外网|
亚洲欧美日韩精品久久奇米色影视|
中文字幕av一区二区三区谷原希美|
精品无人区太爽高潮在线播放|
91国产视频在线播放|
亚洲最大的网站|
欧美色道久久88综合亚洲精品|
日韩高清av在线|
高清欧美性猛交xxxx|
精品久久久在线观看|
国产日韩亚洲欧美|
少妇高潮久久久久久潘金莲|
伊人久久免费视频|
精品一区二区三区三区|
亚洲欧美日韩精品久久奇米色影视|
亚洲嫩模很污视频|
亚洲欧美成人在线|
亚洲视频在线播放|
国产欧美中文字幕|
久久久精品视频在线观看|
大荫蒂欧美视频另类xxxx|
狠狠干狠狠久久|
热久久这里只有精品|
亚洲**2019国产|
一区二区三区美女xx视频|
亚洲午夜女主播在线直播|
亚洲国产成人精品久久|
欧美激情日韩图片|
亚洲欧美日韩网|
伊是香蕉大人久久|
亚洲欧美国内爽妇网|
91精品综合视频|
久久国产一区二区三区|
欧美成人免费观看|
亚洲一区二区三区视频播放|
日韩av大片免费看|
国产成人精品综合|
精品丝袜一区二区三区|
98精品国产高清在线xxxx天堂|
欧美影院成年免费版|
8090成年在线看片午夜|
国产精品午夜国产小视频|
日韩亚洲国产中文字幕|
亚洲人在线视频|
久久精品夜夜夜夜夜久久|
国产精品吊钟奶在线|
久久综合久久八八|
欧美最近摘花xxxx摘花|
奇门遁甲1982国语版免费观看高清|
亚洲精品v欧美精品v日韩精品|
国产福利精品在线|
久久中文精品视频|
国产精品视频网站|
亚洲免费精彩视频|
国产一区二区三区18|
欧美亚洲另类激情另类|
色青青草原桃花久久综合|
亚洲网站在线看|
欧美电影在线观看|
久久久精品国产网站|
欧美日韩色婷婷|
久热精品视频在线|
色诱女教师一区二区三区|
91手机视频在线观看|
欧洲亚洲免费在线|
中国china体内裑精亚洲片|
欧美日韩色婷婷|
久久不射热爱视频精品|
日韩中文在线观看|
性欧美暴力猛交69hd|
一本色道久久88综合日韩精品|
亚洲国产第一页|
日韩国产精品视频|
亚洲欧洲国产精品|
欧美日韩国产中字|
国产精品午夜国产小视频|
久久天堂av综合合色|
7777免费精品视频|
日韩在线观看免费全|
欧美日韩高清在线观看|
亚洲欧美在线第一页|
欧美日韩性视频在线|
国产精品福利无圣光在线一区|
中文字幕最新精品|
欧美日韩中文字幕日韩欧美|
欧美激情免费看|
日韩激情片免费|
亚洲视频在线视频|
国产日产欧美精品|
日韩精品在线观看网站|
国产精品电影一区|
日韩视频―中文字幕|
亚洲国产精品99|
亚洲一区二区黄|
国产精品流白浆视频|
久久精品成人欧美大片古装|
久久网福利资源网站|
国产一区二区动漫|
国产欧美日韩丝袜精品一区|
日韩欧美成人免费视频|
亚洲深夜福利视频|
欧美日韩xxxxx|
91禁国产网站|
91高清视频免费|
久久久亚洲天堂|
欧美在线亚洲在线|
91性高湖久久久久久久久_久久99|
中文字幕综合一区|
色婷婷av一区二区三区久久|
国产精品wwww|
亚洲欧洲午夜一线一品|
亚洲美女在线视频|
亚洲欧美日韩中文在线制服|
国产精品自在线|
亚洲免费电影在线观看|
亚洲人成电影在线|
亚洲美女av网站|
在线看国产精品|
亚洲天堂免费在线|
亚洲va码欧洲m码|
久久久亚洲国产天美传媒修理工|
日本久久中文字幕|
曰本色欧美视频在线|