編排即溝通 (Formatting)

★★★★★Draft

FromClean CodeCode Complete

📚 From the Books

編排即溝通 (Formatting)Comments & Formatting

程式碼的編排不是為了美觀,而是一種溝通。功能會隨版本更迭而改變,但你今天用格式建立起來的「易讀性」會長久影響每一位後來的開發者。好的編排讓檔案讀起來像一篇由上而下展開的報紙文章:先看到標題與大綱,再逐步進入細節。

🧠 Why It Matters

IMPORTANT

最重要的一條是團隊一致性勝過個人喜好。同一專案裡這個檔案 2 格縮排、那個 4 格,括號位置又各行其是,會大幅推高閱讀的認知負荷。好系統應該讓讀者一看到某種格式,就能直覺反應它的意義。

⚖️ Case Study

前 — 沒有段落、宣告離使用很遠、細節在前
function report(rows){
const HEADER="Sales Report";let total=0;let count=0;
// 一堆低階細節堆在最前面,主流程被淹沒
function fmt(n){return "$"+n.toFixed(2);}
for(const r of rows){total+=r.amount;count++;}
const avg=count?total/count:0;
return HEADER+"\n"+fmt(total)+" over "+count+" ("+fmt(avg)+" avg)";
}

沒有空白行分段、totalcount 宣告離使用很遠、低階的 fmt 擠在主流程之前——讀者得自己在腦中重排順序。

後 — 空白行分段、宣告貼近使用、大綱在上細節在下
function report(rows) {
  const HEADER = "Sales Report";

  const total = rows.reduce((sum, r) => sum + r.amount, 0);
  const count = rows.length;
  const average = count ? total / count : 0;

  return `${HEADER}\n${money(total)} over ${count} (${money(average)} avg)`;
}

// 被呼叫的低階細節排在下方
function money(n) {
  return `$${n.toFixed(2)}`;
}

空白行把「標題/計算/輸出」分成三段;每個變數緊貼它的使用;主流程 report 在上、輔助的 money 在下——讀起來由大綱到細節,一氣呵成。

TIP

垂直排版該反映邏輯結構:縮排對應巢狀、空白行對應段落。當一個函式短到能一眼看完、且它呼叫的細節都在下方等著被展開時,整份檔案自然會「讀起來像一篇好文章」。

🔑 Takeaways

✍️ My Notes

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

📖 Further Reading