好名字的第二個性質:一致性。
為什麼一致性能降低認知負擔#
任何程式中都有一些變數會反覆出現(例如檔案系統會大量處理 block number)。
為這類常見用途選定一個名字,並在所有地方都用它。
讀者在某個情境學會這個名字後,看到其他情境立刻能套用知識——就像重用通用類別一樣。
例如:檔案系統中始終用 fileBlock 表示「檔案內的 block index」。
一致性的三個要求#
- 對於指定用途,永遠使用約定名稱
- 該名稱永遠不用在別的用途
- 該用途夠窄,使所有同名變數行為一致
第三點正是本章開頭 Sprite bug 違反的原則:
block同時被用在兩種行為(檔案 block 與磁碟 block) → 引發錯誤假設與 bug。
同類多變數的命名#
有時你需要好幾個指涉「相同種類」的變數。
例如:複製檔案資料的方法需要兩個 block number——來源與目的地。
用約定名稱,再加上區分前綴:
srcFileBlock、dstFileBlock。
迴圈變數的一致性#
若使用 i、j 之類的短名:
- 永遠
i用最外層、j用次外層 - 讀者看到名字就能立即(且安全地)建立假設