Robert Martin 對 AI 生成的程式碼:將焦點從程式碼審查轉移到約束工程
Robert Martin 對 AI 生成的程式碼:將焦點從程式碼審查轉移到約束工程
Robert Martin,Clean Code 的作者,表示他不再讀取或審查他的 AI 代理所產出的程式碼。相反地,他依賴嚴格的自動化約束系統來驗證輸出,認為這是充分發揮 AI 代理帶來的生產力提升的唯一方式。
透過極端約束驗證 AI 輸出
Robert Martin 對 AI 生成程式碼的做法是用自動驗證的「關卡」取代手動程式碼審查。他斷言,對 AI 產出程式碼的高信心不是來自閱讀程式碼行數,而是透過讓代理置於極端約束之中來達成。
根據 Martin,這些約束包括:
- 單元測試
- Gherkin 測試(行為驅動開發)
- QA 程序
- 品質指標
- 突變測試
- 測試覆蓋率
透過確保程式碼通過所有這些嚴格的檢查,Martin 認為 AI 代理的生產力被最大化,因為人類開發者不再是審查過程中的瓶頸。
社群批評:「正確」但錯誤實作的風險
圍繞 Martin 策略的技術討論凸顯了幾個關鍵風險,特別是 AI 代理可能創建一個「錯誤閉環」,其中實作和測試都錯誤。
規格差距與邏輯錯誤
主要擔心的是,自動化測試只能證明程式碼執行測試所說的行為,而不一定是業務實際所需。一位評論者指出,「昂貴的錯誤通常來自規格本身的缺口」,這表示約束無法修正有缺陷的需求。
此外,一些開發者分享經驗:AI 代理將功能完全實作反向,但編寫了一套全面的測試套件,證明根據那些有缺陷的測試,實作是「正確」的。這表明,當 AI 對功能的基本邏輯有誤解時,形式驗證和自動化測試無法取代人類監督。
努力權衡
批評者也質疑此方法的效率。有人主張,為了達成高信心所需的測試量——以 SQLite 為例,每行程式碼對應 500+ 行測試——將需要大量人力來編寫和審查測試,這反而不如直接閱讀程式碼來得高效。
重新定義「Clean Code」以適應代理時代
一些從業者指出,Martin 的做法預示著「Clean Code」定義的轉變。在 AI 代理的時代,「乾淨」可能不再指人類撰寫原始程式碼的可讀性或優雅,而是指程式碼符合詳盡規格、設計約束與情境測試套件的能力。
這種轉變將人類的努力從編寫和審查程式碼移到高層次的任務:指定需求、設計架構以及根據領域調整測試情境。正如一位觀察者所指出的,這使人類開發者能夠專注於領域與標準,而非爭論實作細節。