何時放手執行,何時手動操縱
是否讓智慧體無人值守地執行,歸結為三個問題——把它們當成你離開之前要過一遍的清單。
- 爆炸半徑。 如果出錯,會壞掉多少?對整個程式碼庫做一遍格式化,爆炸半徑很小。資料庫遷移或改動你的認證邏輯,則很大。半徑越大,越要手動操縱。
- 可逆性。 能否廉價地撤銷?在工作樹幹淨的新建 分支上的工作是可逆的——
git restore .它就沒了。刪除資料、傳送郵件、扣卡、推送到生產環境的工作則不是。絕不要讓智慧體無人值守地處理你拿不回來的東西。 - 可驗證性。 你能判斷結果是否正確嗎?如果「完成」意味著一套綠色的測試或一個可見地正常工作的頁面,你幾秒內就能驗證,智慧體非常合適。如果「完成」取決於微妙的判斷——金額計算、安全規則、競態條件——你無法靠一次快速檢查來設卡,那就貼近些。
把它們合起來的簡單辦法:當工作可逆且結果廉價可驗證時放手執行;當不是時則手動操縱。 把構建功能那章的規則帶過來——爆炸半徑越大,步驟越小——再加上它的孿生規則:爆炸半徑越大,韁繩越短。