JavascriptCodingStandard Javascript 代碼規範

規範理念

Any violation to this guide is allowed if it enhances readability.前端

全部的代碼都要變成可供他人容易閱讀的。json

--引用自Dojo Javascript 語法規範數組

規範詳解

命名規範

  1. 必須使用 Tab 鍵進行代碼縮進,以節約代碼大小(建議設置編輯器的tab爲4個空格的寬度)
  2. 接口風格

結構 規則 例如
駝峯式 ModuleClass()
公有方法 混合式 getPosition()
公有變量 混合式 frameStyle
常量 大寫式 DEFAULT_FRAME_LAYOUT

  1. 其餘建議風格,非必要

結構 規則
私有方法 混合,例子:mixedCase
私有變量 混合,例子:mixedCase
方法(method)參數 混合,例子:mixedCase, mixedCase
本地(local)變量 混合,例子:mixedCase, mixedCase

  1. 全部語句結束後,必須使用 ; 號結束
  2. 全部變量必須是有意義的英文,嚴厲禁止拼音
  3. 變量容許使用公認英文縮寫
  4. 類命名必須是駝峯式
  5. 常量必須全部單詞大寫,而且每一個單詞間加下劃線
  6. 枚舉類型時,枚舉的命名必須有意義,枚舉與枚舉成員必須以駝峯式
  7. 常量和枚舉必須在最前端定義,merge 時注意,必須把常量與枚舉定義的文件放在文件列表的第一位
  8. 變量內的簡寫單詞不能全大寫XmlDocument strHtml
  9. "on"只能用做事件的命名
  10. 函數開頭必須是有意義的動詞或動詞短語
  11. 私有類的變量屬性成員 建議 使用混合式命名,並前面下下劃線
  12. 臨時的全局變量放到一個全局的哈希表裏,方便變量回收
  13. 全部全局變量必須初始化,儘可能少用全局變量
  14. 大括號前面不能有換行符
  15. 保留字以及特有的dom屬性不能做爲變量名

特殊命名約定

  1. 前面加 「is」 的變量名應該爲布爾值,亦可以使用 「can」 「has」 「should」
  2. 前面加 」str」 的變量名應該爲字符串
  3. 前面加 「arr」 的變量名應該爲數組
  4. 前面加 「num」 或 「count」 的變量名應該爲數字
  5. 「o」 做爲局部變量或參數,表示爲Object
  6. 「e」 做爲局部變量或參數,表示爲Element
  7. 「evt」 做爲局部變量或參數,表示爲event
  8. 「err」 做爲局部變量或參數,表示爲error
  9. 重複變量建議使用 "i", "j", "k" (依次類推)等名稱的變量(全世界公認)
  10. 能縮寫的單詞儘可能縮寫
  11. 避免產生使人誤解的布爾值 isNotNumber isNan
  12. 處理錯誤的變量,必須在後面跟着 「Error」
  13. 初始化用的函數 必須使用 「init」 開頭,若是一個頁面只有初始化能夠單獨使用 init()
  14. 儘可能作有意義的代碼折行,不要讓一行代碼過長。(HTML 字符串除外)
  15. 操做符 建議 使用空格隔開
  16. 函數調用和方法 避免 使用空白
  17. 逗號(,) 建議 使用空白隔開。
  18. 不容許頻繁使用 previousSibling 和 nextSibling
           

詞法結構

    


  1. 普通代碼段應該看起來以下:
    while(!isDone){
          doSomething();
          isDone = moreToDo();
    }
  2. if 語句應該看起來像這樣:
    if(someCondition){
            statements;
    }elseif(someOtherCondition){
        statements;
    }else{
        statements;
    }
  3. for 語句應該看起來像這樣:
    for(initialization; condition; update){
            statements;
    }
  4. while 語句應該看起來像這樣:
    while(!isDone){
            doSomething();
        isDone = moreToDo();
    }
  5. do ... while 語句應該看起來像這樣:
    do{
            statements;
    }while(condition);
  6. switch 語句應該看起來像這樣:
    switch(condition){
    case ABC:
        statements;
        //  fallthrough
    case DEF:
        statements;
        break;
    default:
            statements;
        break;
    }
  7. try ... catch 語句應該看起來像這樣:
    try{
        statements;
    }catch(ex){
        statements;
    }finally{
        statements;
    }
  8. 單行的 if - else,while 或者 for 語句也必須加入括號:
    if(condition){ statement;}
    while(condition){ statement;}
    for(intialization; condition; update){ statement;}

註釋規範

  1. 一些你不打算給其餘人使用的函數,建議添加 @ignore 讓文檔輸出時能夠忽略這段註釋
  2. 一些相關的功能相關的函數,建議加上@see Function 來對上下文作索引
  3. 對於一些函數不建議或則須要注意的使用方法,必須加上 @deprecated做爲提醒
  4. 每一個js文件的文件頭都必須包含 @fileoverview @author, 建議加上@version
  5. 每一個函數都必須使用JsDoc 來註釋他的用意
  6. 每一個帶參數的函數必須包含 @param
  7. 每一個有返回值的函數必須包含 @return
  8. 構造函數必須加上 @constructor
  9. 繼承函數建議加上 @base 表示其繼承於哪一個類
  10. 經常使用全局變量建議使用 JsDoc 的註釋方式
  11. 通常的變量及局部變量才用 // 方式進行註釋,建議在須要作註釋的語句的上一行
  12. 其餘詳情請參考 JsDoc 註釋方法

其餘

  1. String 優化
  2. 循環體內的字符串累加使用join方式。 例如:
    var r = [];
     for (var i=0;i<100;i++){
          r.push("hello");
     }
     var k = r.join("");
  3. Switch 建議採用hash-table
  4. switch 能夠才用 Object代替 例如:
    var a = {
                    "1":doAction1,
                    "2":doAction2,
            }
            
            function doAction1(){
     
            }
     
            function doAction2(){
     
            }
     
            a[1]();
  5. 不建議使用eval
  6. 不推薦使用eval來執行腳本。除非用來解釋json數據。
  7. 注意 IE 的內存泄露問題
相關文章
相關標籤/搜索