詞性與上下文 (Parts of Speech & Context)

★★★★★Draft

FromClean Code

📚 From the Books

詞性與上下文 (Parts of Speech & Context)Naming

命名不只是選字,還牽涉到詞性上下文兩件事。類別與物件是「東西」,名字該用名詞或名詞片語;方法是「動作」,名字該用動詞或動詞片語。一個過於單薄的變數,只要放進命名得當的類別或函式裡,就能從周圍拿到意義——但同一份上下文一旦被重複寫進每個成員名,就成了贅字。

🧠 Why It Matters

NOTE

詞性選擇對照:類別/物件 → 名詞或名詞片語;方法 → 動詞或動詞片語。這條和一致性相輔相成——詞性一致,讀者的預期才不會落空。名字該多長則是另一個維度,交給名稱長度與作用域

⚖️ Case Study

前 — 詞性錯位、上下文重複
// 類別名混進動詞感、成員又重複 car_ 前綴
class CarInfo {
  constructor() {
    this.car_speed = 0;
    this.car_color = "black";
  }

  // 方法名塞進類別名,car_ 是贅字
  get_car_speed() {
    return this.car_speed;
  }
}

類別已經叫 Car…car_speedget_car_speed 裡的 car_ 讀者早就知道;前綴沒帶來新資訊,只是把每個名字拉長、讓真正的重點(speed)被稀釋。

後 — 名詞類別、動詞方法、上下文交給類別
// 類別用名詞;成員靠類別提供上下文,不再重複前綴
class Car {
  constructor() {
    this.speed = 0;
    this.color = "black";
  }

  // 方法用動詞片語;讀者已知這是 Car 的方法
  getSpeed() {
    return this.speed;
  }
}

類別名 Car 是名詞、方法 getSpeed 是動詞片語,詞性各就各位;speed 從類別拿到「車速」的上下文,於是 car_ 前綴可以整批拿掉——意義沒少,名字更乾淨。

TIP

判斷 car_ 該不該留,問一句:「讀者在這裡還不知道這是 Car 嗎?」在 Car 類別內,答案是「已經知道」,前綴就是贅字;若這個 speed 是漂在某個大函式裡、看不出所屬,那才需要用名字或外層結構補上上下文。

🔑 Takeaways

✍️ My Notes

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

📖 Further Reading