好名字的第二個性質:一致性

為什麼一致性能降低認知負擔#

任何程式中都有一些變數會反覆出現(例如檔案系統會大量處理 block number)。

為這類常見用途選定一個名字,並在所有地方都用它。

讀者在某個情境學會這個名字後,看到其他情境立刻能套用知識——就像重用通用類別一樣。

例如:檔案系統中始終用 fileBlock 表示「檔案內的 block index」。

一致性的三個要求#

  1. 對於指定用途,永遠使用約定名稱
  2. 該名稱永遠不用在別的用途
  3. 該用途夠窄,使所有同名變數行為一致

第三點正是本章開頭 Sprite bug 違反的原則:block 同時被用在兩種行為(檔案 block 與磁碟 block) → 引發錯誤假設與 bug。

同類多變數的命名#

有時你需要好幾個指涉「相同種類」的變數。

例如:複製檔案資料的方法需要兩個 block number——來源與目的地。

用約定名稱,再加上區分前綴srcFileBlockdstFileBlock

迴圈變數的一致性#

若使用 ij 之類的短名:

  • 永遠 i 用最外層、j 用次外層
  • 讀者看到名字就能立即(且安全地)建立假設