註釋不是寫給編譯器看的,是寫給未來的自己、接手的同事、審核的架構師看的。好註釋記錄的是編碼時的思維決策,而非代碼字面翻譯。
「什麼情況下能保證正確運行?」
void sqrt(double x) {
// pre: x >= 0
...
}
「執行完會造成什麼影響?返回什麼?修改了什麼狀態?」
void setName(String name) {
...
// post: this.name == name && returns void
}
「這幾行順序不能亂,原因是什麼?」
// 處理訂單結算
// sequence dependent
// 1st: 計算商品總價
// 2nd: 應用優惠券折扣
// 3rd: 計算運費並生成最終金額
calculateTotal();
applyCoupon();
calculateShipping();
// i++ // i 加 1 這類註釋純噪音註釋要求記錄程式設計師寫程式時的思維過程——前置條件守門、後置條件交代、序列依賴防錯,寫在當下,服務未來。