註解 是原始碼中的說明性文字,編譯器完全忽略,僅供開發者閱讀維護。良好的註解是專案可維護性的基石。
//從 // 至行尾。可獨佔一行或置於程式碼後:
// 這是單行註解
int x = 10; // 初始化 x
/* ... */跨越多行,不可巢狀 (標準 C++):
/* 這是多行註解
可以跨越多行
說明複雜演算法邏輯 */
/* ... */ 內部的 // 無特殊意義,視為普通文字。// 內部的 /* */ 亦無特殊意義。
// /*
// int x = 10;
// /* 內部多行註解 */
// int y = 20;
// */
配合工具 (Doxygen、Javadoc 風格) 自動產生 API 文件。常用標籤:
| 標籤 | 用途 |
|---|---|
@brief | 簡短功能描述 |
@param | 參數說明 |
@return | 回傳值說明 |
@throw | 可能拋出的例外 |
@see | 參考連結 |
@since | 版本資訊 |
@deprecated | 棄用警告 |
/**
* @brief 計算兩整數最大公因數
* @param a 第一個整數
* @param b 第二個整數
* @return 最大公因數
* @throw std::invalid_argument 若輸入為負數
*/
int gcd(int a, int b) {
if (a < 0 || b < 0) throw std::invalid_argument("negative");
while (b) { int r = a % b; a = b; b = r; }
return a;
}
| 原則 | 說明 |
|---|---|
| 解釋「為什麼」非「做什麼」 | 程式碼已表達做什麼,註解說明意圖、演算法選擇、業務規則、非明顯副作用 |
| 保持同步 | 修改程式碼時同步更新註解,過時註解比無註解更有害 |
| 避免顯而易見的註解 | i++; // i 加 1 屬雜訊 |
| 使用英文或團隊統一語言 | 國際化專案建議英文,確保工具支援 |
| TODO/FIXME/HACK 標記 | 標記已知問題、待辦事項,配合 IDE 任務列表追蹤 |
| 公共 API 必須文件化 | 標頭檔介面、類別公共介面 100% 覆蓋 Doxygen 註解 |
| 複雜演算法附上參考 | 論文連結、數學公式、設計文件連結 |
[[deprecated("use newApi()")]]、[[nodiscard]]、[[fallthrough]] 等標準屬性可取代部分註解功能,編譯器直接檢查。
// 單行與 /* */ 多行兩大語法,理解巢狀規則。TODO/FIXME、標準屬性輔助維護流程。