實作註解(implementation comment)是出現在方法內部、幫助讀者理解實作如何運作的註解。
多數方法短到不需要實作註解:給程式碼與介面註解,讀者就能搞懂。
實作註解的主要目的#
目的:幫助讀者理解程式碼在做什麼(what),而不是它怎麼做(how)。
一旦讀者掌握「在做什麼」,「怎麼做」通常自然就懂。
- 短方法只做一件事,這件事已寫在介面註解 → 不需要實作註解
- 長方法則由幾段做不同事的程式碼組成 → 在每段前加一個高層次說明
範例:階段標題#
// Phase 1: Scan active RPCs to see if any have completed.範例:迴圈說明#
// Each iteration of the following loop extracts one request from
// the request message, increments the corresponding object, and
// appends a response to the response message.抽象、直覺,不寫如何抽取請求、如何遞增物件。
迴圈註解只在較長 / 較複雜的迴圈才需要——很多迴圈短到行為已顯而易見。
寫「為什麼」的時機#
除了 what,實作註解也常用來解釋為什麼。
- 程式碼有微妙之處、單看不顯而易見 → 寫下來
- 例如:bug 修正引入的程式碼,目的不明顯 → 加註解說明為何需要
連結到 bug 系統#
若 bug report 已寫得詳盡,註解可指向追蹤系統:
// Fixes RAM-436, related to device driver crashes in Linux 2.4.x.不必把細節抄到註解裡——這是「避免重複」的範例(第 16 章)。
區域變數的註解#
長方法中,少數重要的區域變數值得加註解。
多數區域變數若命名得好就不需要註解。
判斷準則:
- 用途與使用範圍都在幾行以內 → 讀者自己看就懂
- 變數跨越大範圍程式碼 → 加註解描述其代表什麼
文件區域變數時,仍然遵守「寫名詞,不寫動詞」(13.3 節):聚焦變數代表什麼,而非如何被操作。