除錯是逐步逼近的過程#

除錯通常是一個 successive approximation 的過程——反覆建置、執行、失敗、調整。每次迭代花費的等待時間,都是你無法投入解決問題的時間。因此,早期就應該投資於縮短每次除錯迭代的時間

快速建置#

你應該能用一個指令或按鍵就建置失敗的軟體,例如 makemvn compileF5

建置系統應該追蹤檔案之間的相依性,確保修改後只重新編譯必要的檔案。可用的工具包括 make、Ant 和 Maven。

高效部署和執行#

部署和執行的步驟因專案而異,可能需要:

  • 將檔案部署到遠端主機
  • 重啟 application server
  • 清除快取
  • 重新初始化資料庫

利用專案的建置系統或撰寫腳本來自動化這些流程。如果典型安裝過程很漫長,設定一個捷徑,只複製修改過的檔案到目標位置。

快速失敗#

確保軟體能快速失敗(fail fast):

  • 如果程式碼有 unit tests 或 regression-testing framework,建構一個能展示特定失敗的測試案例
  • 利用 IDE 或測試環境的功能來執行單一測試案例
mvn -Dtest=TestFetch test
  • 如果程式是處理特定檔案時失敗,建構一個能觸發失敗的最小檔案
  • 對於 GUI 應用程式,可使用自動化工具如 Selenium(web browsers)、AutoHotkey(Windows)、Automator(macOS)、AutoKey(Linux)

重點回顧#

  • 快速的 turnaround time 能提升除錯效率
  • 建立快速的自動化建置和部署流程
  • 最小化測試失敗所需的時間