米開朗基羅畫西斯汀天頂時,不是每一塊 giornata,發現問題都會當場處理
灰泥還沒乾的那幾個小時,是真正能修改的好時機
過了這個好時機,這塊區域的設計就定案了
想改,得等下一層灰泥,或者接受它就是這樣了每一塊灰泥,都要做同一個判斷
這個問題,值得現在停下來修,還是先記一筆,留到下一輪再處理?
團隊在 sprint 收尾前兩天,發現一個 Day 16 那種霰彈式修改
新增一種折扣類型,得同時改 5 個檔案才能生效
這時候擺在眼前的,是一個很real的選擇:
IDiscountPolicy 介面,把散落的判斷收攏(但重構本身需要時間,還可能引入新的 bug,而發布日期,兩天後就到了)IDiscountPolicy」兩個選擇都不是「錯的」,錯的是不假思索地選,或者選了卻沒有留下任何紀錄
三題只要有一題明確指向「現在修」,就不要猶豫;三題都指向「先緩」,那就該把技術債好好記下來,而不是假裝這個問題不存在
「之後再處理」最容易失敗的地方,是那筆債從來沒有被真正記下來
沒有人記得它、也沒有人知道它多急迫
一筆能真正被追蹤的技術債,至少要包含:
IDiscountPolicy,讓新增折扣類型變成新增一個實作」,不用寫到能直接動工的細節,但要讓下一個接手的人,看得懂要怎麼改沒有觸發條件的技術債,會永遠排在待辦清單最後一項
模組三的三個警訊,追根究底,都是 開放封閉原則在提醒我們的事
新增一種行為,不該逼你回頭修改一段已經在運作的舊程式碼
每一次「先記一筆技術債」,本質上都是在承認
「這個地方目前還沒做到開放封閉,而且,現在不是修正它的最佳時機」
承認這件事,本身不丟人
不承認,才會讓同一塊灰泥,一次又一次地被迫在時間壓力下修改
明天我們進入模組四「阿伯提說」
美是多一分則累贅、少一分則缺憾
可有可無者,正式開工