~/VibeHandbook
免費 PDF

12 · 06

根本原因與表象

除錯中最誘人的陷阱,就是那種讓錯誤消失卻沒修復原因的補丁。如果 user 是 undefined,你用 if (user) { ... } 來"修復"它,錯誤是停止了——但現在註冊會悄無聲息地什麼都不做,這更糟糕:一次響亮的崩潰至少告訴了你哪裡出了錯,而現在什麼都不告訴你了。真正的問題是為什麼 user 在這裡是 undefined? 也許資料庫查詢失敗了。也許某個欄位被重新命名了。也許上游缺了一個 await

當 AI 提出一個修復方案時,問它:

  • "這是在修復原因,還是在掩蓋表象?"
  • "這個值出錯的最初原因是什麼?"
  • "同樣的根本原因會不會破壞其他東西?"

修復根本原因通常會讓程式碼更簡單更清晰。修補表象通常會新增一個守衛、一個吞掉錯誤的 try/catch,或者一個掩蓋真正問題的預設值。對第二種要保持警惕。有一個值得學會的跡象:如果一個修復新增的程式碼,其唯一職責是防止崩潰,而不是做正確的事,那你很可能是在修補表象。真正的修復傾向於把那個不可能的狀態徹底移除,而不只是熬過它。

想離線閱讀?

免費下載整本書的 PDF 或 EPUB。