Upgrade to Pro — share decks privately, control downloads, hide ads and more …

當我們開始不讀 Code - AI Agent 時代,Code Review 與 Clean ...

當我們開始不讀 Code - AI Agent 時代,Code Review 與 Clean Code 還剩下什麼?

當 AI Agent 一次吐出 3,000 行程式碼,Code Review 還要逐行讀嗎?

本簡報以米其林廚房為喻,提出四道防線:
- 審 Plan 不審語法、
- 硬關卡定義 Done、
- 紅黃綠檢傷分流、
- 可逆就自動 Revert。

Clean Code 與 DDD 在 AI 時代的價值沒變,理由換了:它們生產的是信任。

----

tags: AI Agent、#AI Coding、Code Review、Clean Code、Vibe Coding、Domain-Driven Design、DDD、深度模組、Deep Module、Bounded Context、Definition of Done、檢傷分類、自働化、Jidoka、Andon、可逆性、Feature Flag、Revert、可觀測性、Observability、軟體工程、技術領導、DDD Tour 2026 台南站

----

本投影片為 2026 DDD Tour 台南站(2026 年 10 月 17 日,好想工作室場地)的演講內容。DDD Tour 是 DDD Taiwan 領域驅動設計社群巡迴台灣各城市舉辦的技術交流活動,聚集對 Domain-Driven Design、軟體架構、Clean Architecture、Event Storming 與 AI 輔助開發有興趣的工程師、架構師與技術主管。台南站主題聚焦於 AI Agent 時代的軟體工程實務,本場次「當我們開始不讀 Code」探討 Code Review、Clean Code 與 DDD 的 Bounded Context、Aggregate 在 AI 生成程式碼時代的新角色。

----

延伸閱讀

1. Harvard × Jellyfish:AI coding agents generate more code, but not more software(Ars Technica 報導)
https://arstechnica.com/ai/2026/10/ai-coding-agents-generate-more-code-but-not-more-software/

2. Anthropic Engineering:Redesigning source control at Anthropic
https://www.anthropic.com/engineering/redesigning-source-control

3. Uncle Bob 關於不再讀 AI 程式碼的貼文
https://x.com/unclebobmartin/status/2080257779395154409

4. John Ousterhout, A Philosophy of Software Design(深度模組)
https://web.stanford.edu/~ouster/cgi-bin/book.php

5. Lauren Tan(poteto):米其林廚房,而不是程式碼工廠
https://x.com/poteto/status/2102050467505430555

6. 敏捷三叔公中文整理:你不是在用 AI 寫程式,你是在開一間米其林廚房
https://agile3uncles.com/2026/10/05/run-a-michelin-kitchen-not-a-code-factory/

Avatar for James Wang

James Wang

October 17, 2026

More Decks by James Wang

Other Decks in Programming

Transcript

  1. 2026 DDD Tour 台南站 Tainan 當我們開始 不讀 Code AI Agent

    時代,Code Review 與 Clean Code 還剩下 什麼? James Wang 2026.10.17
  2. 這份恐懼,把軟體圈分成了兩派 Uncle Bob Grady Booch 《Clean Code》作者,2026 年 7月 UML

    之父 我不再讀 Agent 寫的 任何程式碼。 靠測試、突變測試與品質關卡建立 信心。 01 破題 我審查 Agent 寫的 每一行。 覆蓋率看不出漏洞、死碼,和根本不 該這樣設計的錯誤抽象。 12
  3. 718 家企業:程式碼變多了,軟體沒有變多 +30 % +23 % +49 % 程式碼產出 PR

    數量 PR 審查時間 ≈0 Jira 實際交付 Harvard 與 Jellyfish,2026 年 10 月。產能全部卡在人類的審查瓶頸。 01 破題 14
  4. 不讀 Code 不是放棄品質,而是把防線外移 離開 廉價的語法實作層 01 02 03 架構邊界 客觀關卡

    極速復原 深度模組灰盒子 米其林廚房的四道防線 10 秒止血,隔天重寫 不押在單一關卡:多層防護、交叉檢核,讓問題更難走進正式環境。 01 破題 16
  5. Clean Code 的註解原則:以前省人類眼力, 現在防止污染 AI 的 Context 這種東西 怎麼處理 解釋

    What 的廢話註解 刪掉,它會被當成範本複製 程式碼的約束與限制 寫進型別與結構,讓 AI 繞不過去 商業決策的 Why 留下,這是人類審意圖的錨點 02 架構 19
  6. Clean Code 還剩下什麼?價值沒變,理由換了 為人類眼力而生的,可以放手 交給 Formatter 與 Linter 函式行數上限、檔案拆小、 縮排與排版、命名風格的口水戰。

    機器不會累,也不會吵。 為系統本質而生的,必須死守 AI 讀得懂,才改得對 揭示意圖的命名、單一職責、無副作用、 不重複、留 Why 刪 What、型別表達 約束。 壞味道會被複製,好結構會被延續。 Clean Code 從「寫給下一個工程師看」,變成「寫給下一個 Agent 讀」。 02 架構 20
  7. AI 為什麼特別愛造淺層模組? 01 多包一層不用錢 人多寫一層要花時間維護,會先想有沒有必 要;AI 生成零成本,順手就多包一層。 02 教科書式的拆法 把

    SRP 照字面執行:一個概念一個類別、一 個類別一個檔案,於是 22 個檔案。 03 只看得到眼前 每次 Context 只有這一個需求,沒有人替全 局收斂;每個小需求都再長一層。 代價:22 個檔案就是 22 個要讀的介面,人讀不完,AI 也讀不完。 02 架構 23
  8. 往深度走:審 Plan 時問一句話,做三個動作 「呼叫端需要知道這件事嗎?」 轉手層要有理由 把決策推進去 介面只說意圖 防腐層、Adapter 擋外 常見情況給預設值,例

    方法名講「做什麼」,不 部變化,留;只把參數 往下傳的,併掉。 外才開選項。呼叫端不 用設定。 講「怎麼做」。怎麼做是 盒子裡的事。 備註:深不是大。一個模組只圍繞一個概念,介面窄是結果;Aggregate 就 是深度模組的範本。 02 架構 24
  9. 設計介面,委派實作:把內部當成灰盒子 01 02 03 人類定義窄介面 用測試鎖死邊界 內部交給 AI 用 DDD

    與依賴反轉, 把介面與資料契約定 清楚。 在窄介面上寫自動化 測試, 鎖住輸入與輸出。 不是黑盒子,契約是我們 鎖的; 但不必逐行檢查迴圈。 爆炸半徑被窄介面隔離:盒子裡寫得不漂亮,也炸不到外面;隨時 可以叫 AI 幾秒內整個重寫。 02 架構 25
  10. 主廚其實只做了兩件事 01 02 每一盤到他面前之前, 早就分好類了 出錯的那一站, 自己先喊停 醬汁錯了整桌毀,親自嚐。 擺盤歪了可以挪,看一眼。 麵包不會出錯,直接過。

    不把錯的菜往下送。 整條線停下來,叫主廚過來。 停,比修快;重做,比補救穩。 這兩件事,一件來自急診室,一件來自豐田。 03 防線 31
  11. 檢傷分類 自働化 働 誰來看:先貼顏色 出事怎麼辦:異常即停 紅:不可逆核心,人逐行讀。 黃:可逆區,人只審意圖。 綠:測試與 AI 通過,直接通行。

    關卡不綠,不叫人。 線上異常:自動退版 Revert,再通 報人。 自動上版之外,更要有自動退版。 Triage 與 Jidoka:廚房只有兩條規則,四道防線都是它們的落地。 03 防線 32
  12. 發生兩次的錯誤,就往上推進結構裡 架構與型別 Linter 與架構測試 可重用的 Skills 文件與人工 CLAUDE.md 常被讀了然後無視 約束

    AI 的手段由強到弱。不要指望一份長長的 Markdown,錯誤要在結構 上就過不了關。 03 防線 33
  13. 四道防線,每一道在一個環節加強一種信任 01 02 03 04 動手前 · 檢傷 寫完後 ·

    自働化 人工審查 · 檢傷 合併後 · 自働化 先審 Plan 硬關卡定義 Done 紅黃綠分流 退得回去,看 得清楚 信任設計方向 信任客觀完成 03 防線 信任判斷放對 位置 信任從容面對 上線 34
  14. 防線一:先審 Plan,不審語法 3 分鐘 在 Agent 寫任何實作之前,先審它的 20 行 Plan。審的不是語法,是三個問題——答不

    好,就在這裡說「不」。 碰到哪裡? 介面多窄? 哪些不可逆? 要動哪幾個模組、哪個 邊界 多包一層,就問為什麼 先標出來,之後逐行讀 的就是它 03 防線 35
  15. 審 Plan 時,人只盯最裡面兩圈:規則與邊界 UI · API · DB Use Case

    先規則 人寫:Use Case 要完成什麼、哪 些不變量不能破。 商業 規則 先邊界 人定:窄介面與契約。Bounded Context 切的是規則的責任範圍。 再往外長 AI 生:UI、API、Repository、測 試。隨時替換。 邊界切好,AI 不必看完整個系統,只看它需要看的那一塊。 03 防線 36
  16. 防線二:硬關卡加獨立驗證,才算 Done 為什麼不能自審 叫 AI 再審一次,它永遠找得到東西挑;沒有終止 條件 客觀關卡 零警告編譯、零 TODO、架構測試全綠

    寫作者與驗證者分權 不讓寫 Code 的 Agent 自己改考卷;驗證 Agent 跑真實應用、附執行證據 然後 全綠且有證據,才准叫人類 Reviewer 03 防線 37
  17. 防線三:檢傷分類——紅色交給人,綠色直接通行 紅 黃 綠 不可逆核心 人逐行讀 可逆的灰盒子 人只審意圖 畫面文案、樣式 沒有人讀

    金流、權限、破壞性 Migration、測試與關卡本 身。炸了救不回來, CODEOWNERS 強制逐行。 查詢、無狀態計算。看意 圖、窄介面契約、BDD 場 景、Why 註解;對過度設計 說「不」。 排序、格式、樣式調 整。有測試、AI review 通過,直接合併。 以我們團隊為例。判準只有一個:上線炸了,可不可逆。Booch 是對的——在紅色那一欄。 03 防線 39
  18. 防線四:半夜不讀 AI 程式碼除錯 10 秒 凌晨兩點半:止血 在控制台把推薦計分關掉,退回預設排 序。警報歸零,關上電腦,回去睡覺。 +1 個紅燈測試

    隔天早上十點:重寫 把那組髒資料寫成第 6 個 BDD 紅燈測試, 叫 Agent 重寫灰盒子內部,讓 6 個測試 全綠。 大型灰盒子包在 Feature Flag 裡;沒包 Flag 的日常發布,由金絲雀部署與自動回滾 覆蓋。 03 防線 41
  19. 防線四:退得回去,看得清楚 黃與綠:可逆 · 自動退版 紅:不可逆 · 手動退版 自動 Revert,不叫醒你 有把握的手動

    Revert Feature Flag、金絲雀。 機器先 Revert,天亮再通報人。 Revert 腳本與補償交易,演練過。 人按下去前,就知道會發生什麼。 當下:炸在哪、炸多大、退回去好了沒。 可觀測性 事後:重現問題與 Incident Review 的客觀依據。 餵給 Agent 學習,持續降低事故發生率。 03 防線 42
  20. 回到那個禮拜五:Reviewer 只花了 10 分鐘 隔週,同一個需求,我們用四道防線重新做一次。兩邊的 Diff 都含測試。 那個禮拜五 隔週,重新來過 Diff(含測試)

    3,000 行 / 22 檔 1,000 行 / 6 檔 審 Plan 沒有 3 分鐘,關鍵在說「不」 不可逆的 30 行 混在三千行裡 3 分鐘,逐行細讀 可逆的 970 行 整個週末讀不完 4 分鐘,只審意圖與介面 03 防線 43
  21. 據報導,Google 正在試點 Code Comprehension 面試 01 02 03 幾百行陌生程式碼 看得懂陌生系統嗎

    抓得出 AI 的錯嗎 多檔案、不是你寫的, 先建立自己的 看似合理、 而且開放用 AI。 除錯假設,再問 AI。 實則微妙錯誤的實作。 「讀懂陌生 Code 並驗證 AI」從附屬品,變成必須刻意練習的核心 技能。 04 傳承 45
  22. 把日常交付與刻意學習解耦 Pair Programming Pair Verification 01 02 03 一起審 Plan

    每週抽樣抓錯 提煉成 Skills 資深帶著資淺, 審 Agent 提的計畫。 打開一個灰盒子的陌 生 Code, 練習抓過度設計。 把資深的排查直覺, 寫成團隊共享的規則。 04 傳承 46
  23. Q&A 01 是什麼讓你最不敢對 AI 的 PR 按 Approve?「先審 Plan」 能擋掉多少重工?

    02 你們的系統,哪 80% 可以封裝成灰盒子?哪 20% 不可逆核 心必須逐行死守? 03 當新人第一份工作就是指揮 Agent,怎麼把 Mentoring 轉向 一起審 Plan、一起抓 AI 的錯? James 2026 DDD Tour 台南站
  24. 附錄:深度模組的六條原則——深不是大 01 深≠大 看呼叫端要知道多少,不是檔案多大。 02 一起變的放一起 一個概念、一個變化理由。 03 資訊隱藏 設計決策藏在裡面,不洩漏給鄰居。

    04 穿過一層,抽象要變 只傳參數不改抽象,就是淺層徵兆。 05 比需求通用一點點 太特化長方法;太通用沒人懂。 06 錯誤與預設值收進去 常見情況零設定,少丟例外出去。 對照 DDD:Aggregate 就是深度模組的範本。 附錄 · 對應第 22–24 頁 50
  25. 附錄:完整的 Definition of Done 01 零警告編譯、零 TODO 或未實作標記 02 測試由紅轉綠、架構依賴測試通過

    03 Owner 與 Verifier 分權:驗證 Agent 依功能地圖跑真實應 用,附截圖或 API 執行證據 04 禁止 Agent 削弱或刪除測試來過關 05 以上全綠且有證據,才呼叫人類 Reviewer 附錄 · 對應第 37 頁 51
  26. 附錄:基礎的客觀檢核,機器說了算 編譯與靜態分析 零警告,Analyzer 與 Lint 全過 自動化測試 單元與 BDD 全綠,覆蓋率不低於主幹

    架構與契約 依賴方向、Context 邊界、公開 API 相容性 安全掃描 SAST、相依套件漏洞、Secret 外洩 效能與負載 關鍵 API 回應時間與吞吐量不劣於基準線 執行證據 驗證 Agent 跑真實應用,附截圖或 API 回應 關卡本身 測試與 CI 設定屬紅區,改動須人逐行審 附錄 · 對應第 37 頁 52
  27. 附錄:做到極致,一天合併三萬筆 30,000 筆/日 · Anthropic,2026 年 9 月 5 月才

    2,500。團隊仍審每一筆意圖,前提只有一個:每一筆都很小。 敏捷 DevOps 軟體工藝 小步快跑、MVP。 一個 PR 一個意圖。 持續交付、小批量。 炸了退得回去。 深度模組與測試。 小到能整個重寫。 小,不是為了快;小,是為了讓人看得完、退得回去。 信任是這樣一筆一筆堆出來的。 附錄 · 對應第 35、38 頁 54
  28. 引用來源(一) 718 家企業 Harvard & Jellyfish 研究,Ars Technica 報導,2026-10 arstechnica.com/ai/2026/10/ai-coding-agentsgenerate-more-code-but-not-more-software/

    深度模組 Ousterhout, A Philosophy of Software Design, 2018 web.stanford.edu/~ouster/cgi-bin/book.php 三萬筆合併 Anthropic, Redesigning source control, 2026-10-13 anthropic.com/engineering/redesigning-source-control 附錄 55
  29. 引用來源(二) 不讀 vs. 讀每 一行 Uncle Bob 於 X 發文與

    Grady Booch 回應,2026-07; Inside 中文報導 x.com/unclebobmartin/status/20802577793951544 09 inside.com.tw/article/41914 Google 面試 附錄 Exponent, Google AI Coding Interview Guide, 2026 tryexponent.com/blog/google-ai-codinginterview 56