註釋是代碼中最多見的組成部分.它們是另外一種形式的文檔,也是程序員最後才捨得去寫的javascript
// 好的寫法 if (bol) { // 這裏是代碼註釋 test(); } // 很差的寫法: 註釋以前沒有空行 if (bol) { // 這裏是代碼註釋 test(); } // 很差得寫法: 錯誤的縮進 if (bol) { // 這裏是代碼註釋 test(); } // 好的寫法 var result = something + somethingElse; // somethingElse不該當爲null // 很差的寫法: 代碼和註釋之間沒有空格 var result = something + somethingElse;// somethingElse不該當爲null // 好的寫法 // if (bol) { // test(); // } // 很差的寫法: 應該使用多行註釋 // 接下來的有點難 // 我來解一下 // 先這樣 // 而後那樣 // 而後再這樣 if (bol) { test(); }
它以/*
開始,以*/
結束java
var result = something + somethingElse;// somethingElse不該當爲null// 好的寫法 if (bol) { /* * 這個是一個多行註釋 * 這個是第二行 */ test(); } // 很差的寫法: 註釋前沒有空行 if (bol) { /* * 這個是一個多行註釋 * 這個是第二行 */ test(); } // 很差的寫法: 星號後沒有空格 if (bol) { /* *這個是一個多行註釋 *這個是第二行 */ test(); } // 很差的寫法: 錯誤的縮進 if (bol) { /* *這個是一個多行註釋 *這個是第二行 */ test(); } // 很差的寫法: 行尾不適合使用多行註釋 var result = something + somethingElse; /* somethingElse不該當爲null */
什麼時候添加註釋是程序員常常討論的一個話題. 一種同行的指導原則是,當代碼不夠清晰的時候添加註釋,而當代碼很明瞭的時候不該當添加註釋.程序員
// 很差的寫法 // 初始化count var count = 10; // 好的寫法 // 改變這個值可能會讓它變成青蛙 var count = 10;
難於理解的代碼應該加上註釋.根據代碼的用途,你能夠用單行註釋/多行註釋,或者混用兩種註釋.關鍵是讓其餘人更容易讀懂這段代碼瀏覽器
// 好的寫法 if(mode){ /* * 當mode爲2時(原型到原型,對象到對象),這裏只遞歸執行一次 * 用來執行原型到原型,對象到對象的都合併操做 * 將會被掛起,在合適的時機執行 */ if(mode === 2) { Y.mix(...) } }
while (element && (element = element[axis])){ // 提示: 賦值操做 if( (all || element[TAG_NAME]) && (!fn || fn(element))){ return element; } }
這個例子中,開發者在while循環控制條件中使用了一個賦值運算符.這不是一種標準的用法,並經常被檢測工具認爲有問題的.若是你對這個代碼不熟悉,誤覺得是錯誤,加上了註釋,就不會有這種誤解了函數
var ret = false; if( !needle || !element || !needle[NODE_TYPE] || !element[NODE_TYPE]) { ret = false; } else if (element[CONTAINS]) { // 若是needle不是ELEMENT_NODE時, IE和Safari 下會有錯誤 if(Y.UA.opera || needle[NODE_TYPE] === 1){ ret = element[CONTAINS](needle); }else{ ret = Y_DOM._bruteContains(element, needle); } } // ....省略
從技術的角度講, 文檔註釋並非JavaScript的組成部分,但它們是一種廣泛的實踐工具
/* * 這個函數是用來測試文檔註釋的 * 這個函數是有幾個參數 * 一個是這個,一個是哪一個 * @method test * @params {String} 一個文字 * @params {Object} 一個對象 * @return {Object} 返回一個對象 */ var test = function (message, obj) { return { message: message, obj: obj } }
全部的方法測試
- 應當對方法,指望的參數和可能返回的返回值添加註釋描敘
全部的構造函數code
- 應當對自定義類型和指望的參數添加註釋描敘
全部包含文檔化的對象對象
- 若是一個對象包含一個或者多個附帶文檔註釋的方法,那麼這個對象也應當適當地針對文檔生成工具添加文檔註釋