一詞一概念與一致性 (Consistency)

★★★★Draft

FromClean CodeAPoSDCode Complete

📚 From the Books

一詞一概念與一致性 (Consistency)Naming

一致性是把命名從「每次都要重新判斷」變成「一次學會、到處套用」。當某個概念在整個程式裡永遠叫同一個名字、而那個名字也永遠只指這件事,讀者在一處學到的知識就能安全地帶到每一處——這正是降低認知負荷最便宜的方法。

🧠 Why It Matters

NOTE

詞性也要一致:類別/物件用名詞或名詞片語,方法用動詞或動詞片語。存取器統一用 getset 前綴。這些小約定累積起來,就是「不用想」的順暢。

⚖️ Case Study

前 — 同一概念,三種叫法
// fetch / get / retrieve / load 混用,讀者被迫猜它們是不是不一樣
class UserRepository {
  fetchUser(id) {
    /* ... */
  }
  getProfile(id) {
    /* ... */
  }
  retrieveSettings(id) {
    /* ... */
  }
  loadHistory(id) {
    /* ... */
  }
}

四個方法做同一件事(依 id 取資料),卻用四個動詞。每次呼叫都得停下來想「這個跟那個有差嗎」。

後 — 一個概念一個詞
// 統一用 get;同類多參數用「約定名 + 區分前綴」
class UserRepository {
  getUser(id) {
    /* ... */
  }
  getProfile(id) {
    /* ... */
  }
  getSettings(id) {
    /* ... */
  }
  getHistory(id) {
    /* ... */
  }

  // 需要來源與目的地兩個 block 時:srcFileBlock / dstFileBlock
  copyBlock(srcFileBlock, dstFileBlock) {
    /* ... */
  }
}

動詞統一成 get,讀者不再需要猜差異;當同類變數有多個(來源/目的地),用約定名加 srcdst 前綴,而不是另立新詞。

TIP

對稱詞組能強化一致性:beginendfirstlastminmaxnextpreviousoldnewsourcetarget。成對出現的概念用成對的詞,讀者的預期就不會落空。迴圈短名也一樣——永遠 i 在最外層、j 在次外層。

🔑 Takeaways

✍️ My Notes

No notes yet — jot your takeaways or Q&A here.

📖 Further Reading