程式碼風格指南

一句話定義

一份團隊或個人對程式碼書寫風格與結構的成文約定;驗收條件是 Mark-Otto 的 Golden Rule——「每一行程式都看起來像同一個人寫的,無論貢獻者有多少」。

核心要點

元命題:單一作者錯覺

Every line of code should appear to be written by a single person, no matter the number of contributors.

驗收條件不是「規則最完備」,而是讀者讀不出多人協作的痕跡——對位 排版好排版『沒有感覺』」的元命題:兩者都用「使用者無感」當終極驗收。

典型涵蓋面(從具體到抽象)

層級內容自動化程度
格式層縮排、引號、空白、行尾、換行高(formatter / .editorconfig)
語法層屬性順序、boolean attribute、shorthand 用法中(linter)
命名層class / 變數 / 檔案命名規則中(linter rule)
結構層檔案組織、模組切分、宣告順序低(review + 慣例)
判斷層「avoid nesting > 3」「reduce markup」等設計建議低(人類判斷)

自動化原則:能交給 formatter / linter 的就交給工具,只把不能自動化的部分寫進文件。文件愈短愈可能被讀。

規範的層次

從外向內逐層覆寫:

  1. 語言 / 平台共識(HTML5 spec 的 case 慣例、PEP 8 對於 Python)
  2. 生態預設(Prettier 預設、Black 預設)
  3. 公司風格(覆寫前兩層的差異化決策)
  4. 專案規範(這個 repo 的特化)

在 Code Review 中的角色

2026-05-06-Google-Code-Review 補上一條重要邊界:在 Code-Review 裡,style guide 是 style issue 的共同裁判;有明文規範就照規範,沒有規範時通常尊重 author 或既有 codebase 一致性。若 reviewer 只是覺得另一種 style 更好,應標示為 Nit:,不應把個人偏好升級成 blocking comment。

跨工法對位:給人類 vs 給 Agent

  • 給人類團隊:協作收斂工具——比「哪條規則最對」更重要的是「大家用同一條」。
  • 給 LLM / AgentAI輔助開發 駐留 agent 場景下,CLAUDE.md / .cursorrules / AGENTS.md 等本質就是「寫給 LLM 讀的 style guide」——把專案的特殊約束、命名慣例、不要做的事寫進常駐脈絡,讓 agent 每次 session 啟動自動載入。

公開的代表作

  • Mark-Otto Code Guide(HTML / CSS)— 一頁可讀完的精簡範式(vault 內錨點來源)
  • Google Style Guides(C++ / Python / Java / Shell / etc.)— 大公司全棧版
  • Airbnb JavaScript Style Guide — 社群最廣泛 fork 的 JS 規範
  • Prettier / Black — 「無爭議格式化」哲學:用工具消滅風格戰爭

與其他概念的關係

  • AI輔助開發 — 駐留 agent 場景下,CLAUDE.md / .cursorrules 本質是「寫給 LLM 讀的 style guide」;style guide 從人類協作工具擴展為 agent 的常駐脈絡。
  • 排版 — 共享「沒有感覺 / 像一個人做的」終極驗收元命題:好排版讀者無感、好風格指南讀起來像一個人寫的。
  • Context-Engineering — style guide 是長期穩定的低變動 context,由配置層(CLAUDE.md / .editorconfig / linter config)一次載入,而非每次 prompt 重述;屬於 context engineering「該說什麼一次說好」的工法。
  • Pull-Request / GitHub工作流 — PR 是 style guide 的最後一道把關:再短的指南也需要在 PR review 時被人或 hook 確認;squash-merge 的「main 每個 commit 都正常工作」原則直接對位 Golden Rule「每一行程式都看起來像同一個人寫的」——squash 把多人 / 多次嘗試的雜訊收斂成單一作者外觀,是 Golden Rule 在 commit history 層的具體執行。
  • Code-Review — style guide 在 review 中負責把風格爭議從個人偏好轉成共同規則;沒有共同規則時,style comment 多半應是 non-blocking Nit:

相關來源

備註

Vault 中此概念的初始錨點是 Mark-Otto 的 HTML / CSS 規範。未來累積方向

  • Google / Airbnb / Prettier 等其他代表性 style guide 對位
  • linter / formatter 工具層(ESLint / Prettier / Black / Ruff / clippy)
  • LLM-target style guide(CLAUDE.md / .cursorrules / AGENTS.md)的成熟工法
  • 大型專案的 monorepo style enforcement(pre-commit hook / CI gating)
  • Design system 與 code style guide 的交界(Bootstrap / Tailwind / Material 等)