帶著批判地閱讀 diff
diff 就是一份關於究竟改了什麼的清單:紅色行被刪除,綠色行被新增。讀 diff 是 vibe coding 中槓桿率最高的習慣,因為正是在這裡你能抓出 AI 在做你沒要求它做的事。
你不必理解每一行。掃一掃這些危險訊號:
- 你沒料到會變的檔案。 一個配置檔案為什麼被改動了?
- 被刪掉的程式碼。 它是不是為了"讓測試通過"而刪掉了一個校驗檢查、一個錯誤處理器,或一個測試?
- 金鑰或硬編碼的值。 不該出現在程式碼裡的 (Application Programming Interface)key、密碼或 (Uniform Resource Locator——網址)。
- 被停用的檢查。 一個被跳過的測試、一段被註釋掉的守衛、一個
// @ts-ignore,或者一個被放鬆的許可權。 - 範圍蔓延(Scope creep)。 離你要求的內容很遠的改動。
如果有什麼看起來不對勁,就問:"解釋一下你為什麼改了 X——我沒要求改那個。" 尤其要讓 AI 為刪除行為辯護。"它在導致報錯"是一個去理解那個報錯的理由,而不是刪掉那個檢查的理由。
一個養成習慣的實用做法:在你接受改動之前讀 diff,絕不在之後。一旦程式碼被合併、應用看起來能跑,你就再也不會回去讀它了——沒有任何摩擦逼著你去讀。審查的那一刻,必須就是決定的那一刻。工具在這裡幫得上忙:git diff --stat 給你每個檔案一行的摘要,讓意料之外的檔案立刻跳出來;在 頁面上審查,會把整個改動呈現在一個可滾動的視圖裡,而不是散落在你編輯器各處。