編寫可讀程式碼的藝術

📏 核心定理

🎨 表面層次的改進

🔀 簡化迴圈與邏輯

🧹 重新組織程式碼

🗣 把想法變程式

程式碼的寫法,應讓別人 理解它所需的時間最小化

好名字:具體勝過抽象, 把資訊塞進名字裡

排版:對齊、一致的空行與順序

註解:只寫有價值的, 記錄「為什麼」而非「做什麼」

先處理特例/提早 return, 避免深巢狀

拆解龐大運算式, 用解釋型變數

🎯 什麼情境該想到我

當一個函式/檔案裡變數一堆、你得記住每個在哪被改、心智負擔很重時。

⚙️ 怎麼用

  1. 讓變數越晚出現、越早消失:用到才宣告,作用域越小越好。
  2. 減少變數數量:刪掉只用一次的中間暫存、消掉沒在用的變數。
  3. 偏好不可變(只賦值一次):越少會變的變數,越好推理。
  4. 避免全域/大範圍可變狀態:把狀態關進最小的範圍。

🧪 我實際套用的紀錄

  • 2026-07-14:(待填)

⚠️ 注意

  • 目標是「同時要記在腦中的變數變少」,不是硬拆到破碎。

🔗 相關工具

🎯 什麼情境該想到我

當一段程式把「取資料 + 轉換 + 驗證 + 輸出」全糊在一起,讀起來很費力時。

⚙️ 怎麼用

  1. 列出這段程式做了哪些「任務」(常常一寫就是好幾件)。
  2. 讓這些任務依序、分開進行:一個區塊/函式只推進一件任務。
  3. 必要時把每件任務提煉成獨立函式(見 工具-提煉函式)。

這條是「函式單一職責」在任何一段程式碼層級的應用,連函式內部都適用。

🧪 我實際套用的紀錄

  • 2026-07-14:(待填)

⚠️ 注意

  • 「一件事」是相對的抽象層次判斷;能被有意義地再分,就還沒到位。

🔗 相關工具

  • 工具-函式短小且單一職責 —— 同一件事的函式層說法,這張講「一段程式碼」,它講「一個函式」的邊界
  • 工具-縮小變數作用域 —— 配套手法:把任務拆開後,順手把各段的變數關進各自的範圍,心智負擔才真的降下來
  • 工具-提煉函式 —— 拆解的執行工具:辨認出「這段在做另一件事」之後,用它把那段搬出去命名

先用白話把邏輯講一遍, 再照著寫(命名的鏡子)