除錯是逐步逼近的過程#
除錯通常是一個 successive approximation 的過程——反覆建置、執行、失敗、調整。每次迭代花費的等待時間,都是你無法投入解決問題的時間。因此,早期就應該投資於縮短每次除錯迭代的時間。
快速建置#
你應該能用一個指令或按鍵就建置失敗的軟體,例如
make、mvn compile或F5。
建置系統應該追蹤檔案之間的相依性,確保修改後只重新編譯必要的檔案。可用的工具包括 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 能提升除錯效率
- 建立快速的自動化建置和部署流程
- 最小化測試失敗所需的時間