国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Dojo Javascript 編程規范 規范自己的JavaScript書寫

2019-11-20 13:59:29
字體:
來源:轉載
供稿:網友

前言

良好的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
);

注:表達式的縮進與變量聲明應為一致的。
注:函數的參數應采用明確的縮進,縮進規則與其他塊保持一致。

變量

  1. 變量必須在聲明初始化以后才能使用,即便是 NULL 類型。
  2. 變量不能產生歧義。
  3. 相關的變量集應該放在同一代碼塊中,非相關的變量集不應該放在同一代碼塊中。
  4. 變量應該盡量保持最小的生存周期。
  5. 循環/重復變量的規范:
    1. 只有循環控制塊的話,則必須使用 FOR 循環。
    2. 循環變量應該在循環開始前就被初始化;如使用 FOR 循環,則使用 FOR 語句初始化循環變量。
    3. “do … while” 語句是被允許的。
    4. “break” 和 “continue” 語句仍然允許使用(但請注意)。
  6. 條件表達式
    1. 應該盡量避免復雜的條件表達式,如有必要可以使用臨時布爾變量。
    2. The nominal case SHOULD be put in the “if” part and the exception in the “else” part of an “if” statement.
    3. 應避免在條件表達式中加入塊。
  7. 雜項
    1. 盡量避免幻數(Magic numbers),他們應該使用常量來代替。
    2. 浮點變量必須指明小數點后一位(即使是 0)。
    3. 浮點變量必須指明實部,即使它們為零(使用 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

主站蜘蛛池模板: 永修县| 桃园市| 凌源市| 大渡口区| 南川市| 招远市| 绍兴县| 延安市| 武城县| 长阳| 北京市| 盖州市| 蒙阴县| 萝北县| 江都市| 武夷山市| 江津市| 根河市| 大名县| 金川县| 桦南县| 昆明市| 宜兴市| 师宗县| 丹棱县| 清水河县| 丰宁| 萝北县| 吉林省| 木里| 洛隆县| 泽库县| 陵水| 宽甸| 阳西县| 佳木斯市| 安乡县| 苏尼特右旗| 平和县| 息烽县| 恩施市|