注釋

“別給糟糕的代碼加注釋——重新寫(xiě)吧?!?br> ? ? ? ? ? ? ? ? ? ? ? ? ? ——Brian W.Kernighan 與 P.J.Plaugher

注釋的恰當(dāng)用法是彌補(bǔ)我們?cè)谟么a表達(dá)意圖時(shí)遭遇的失敗。所以注釋并不是一種好東西,當(dāng)我們要寫(xiě)注釋時(shí),應(yīng)想辦法找找能不能翻盤(pán),從而使我們不通過(guò)注釋就能表達(dá)清晰意圖。

注釋不能美化糟糕代碼

我們寫(xiě)注釋的動(dòng)機(jī)之一是糟糕代碼的存在。想通過(guò)注釋來(lái)使之表意清晰。
但是請(qǐng)記住,帶有少量注釋的整潔而有表達(dá)力的代碼,要比代有大量注釋的零碎而復(fù)雜的代碼像樣的多。所以與其花時(shí)間為糟糕的代碼寫(xiě)注釋。不如花時(shí)間將它重構(gòu)。

用代碼來(lái)闡述

// check to see if the employee is eligible for full benefits
if ( (employee.flags & HOURLY_FLAG) && (employee.age > 65) )
//VS
if (employee.isEligibleForFullBenefits())

我們看上面兩個(gè)指令:一個(gè)通過(guò)注釋來(lái)表達(dá)意圖,而另一個(gè)創(chuàng)建了一個(gè)函數(shù),但表達(dá)了相同的意思,而我們只需思考幾秒

好注釋

有些注釋時(shí)好的,也是有利的。下面是一些比較值得寫(xiě)的注釋。但是請(qǐng)記住,真正好的注釋時(shí)想辦法不去寫(xiě)的注釋。

  1. 法律信息
    公司代碼規(guī)范要求編寫(xiě)的與法律相關(guān)的注釋。
    如果可以,這種注釋?xiě)?yīng)指向一份標(biāo)準(zhǔn)許或其他外部文檔,而不是把條款放在注釋中
  2. 提供信息的注釋
    有時(shí)用注釋來(lái)提供基本信息也有其作用
  3. 對(duì)意圖的解釋
    注釋不僅提供了有關(guān)實(shí)現(xiàn)的有用信息,而且提供了某個(gè)決定后面的意圖。
  4. 闡釋
    注釋把某些晦澀難明的參數(shù)或返回值的意義翻譯為某種可讀形式。
  5. 警示
    用于警告別的程序員會(huì)出現(xiàn)某種后果的注釋。
  6. TODO注釋
    TODO是一種程序員認(rèn)為應(yīng)該做,但由于某些原因目前還未做的工作。
    TODO要定期查看,刪除不需要的
  7. 放大
    注釋可以用來(lái)放大某種看起來(lái)不合理之物的重要性。
  8. 公共API的Javadoc

壞注釋

通常,壞注釋都是糟糕代碼的支撐或借口,或者對(duì)錯(cuò)誤決策的修正。

  1. 喃喃自語(yǔ)
    只是覺(jué)得應(yīng)該添加或者過(guò)程需要就加注釋。
  2. 多余的注釋
    不要讓讀注釋的時(shí)間比讀代碼的時(shí)間還長(zhǎng)。
  3. 誤導(dǎo)性注釋
    雖然初衷是好的,但是寫(xiě)的不夠精確地注釋。
  4. 循規(guī)式注釋
    為函數(shù)或者變量加注釋是愚蠢和可笑的。
  5. 日志式注釋
    記錄每次修改的日志
  6. 廢話(huà)注釋
    顧名思義,純粹在講廢話(huà)的注釋
  7. 可怕的廢話(huà)
    不知道干什么,只是隨意的復(fù)制粘貼
  8. 能用函數(shù)名或變量時(shí)就別用注釋
  9. 位置標(biāo)記
    用于標(biāo)記某個(gè)特殊位置
  10. 括號(hào)后面的注釋
    適用于深度嵌套結(jié)構(gòu)的長(zhǎng)函數(shù),不適用于短小、封裝的函數(shù)。
  11. 歸屬與署名
    源代碼控制系統(tǒng)非常善于記住是誰(shuí)在何時(shí)添加了什么。所以不比較自己增加簽名
    12.注釋掉的代碼
    沒(méi)用的代碼直接刪掉,而不是注釋。不然別人都不知道這段代碼到底有沒(méi)有用。
    13.HTML注釋
  12. 非本地信息
  13. 信息過(guò)多
  14. 不明顯的聯(lián)系
  15. 函數(shù)頭
  16. 非公共代碼中的javadoc
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容