March 27 22:10~22:38
▼以下範例截錄自《Refactoring》一書。Person類別的用int代表血型,並且宣告了四個常數0、1、2、3分別用來代表O、A、B、AB型。這種寫法的問題是,如果客戶端程式在設定血型的時候沒有使用Person所宣告的血型常數,例如呼叫setBloodGroup(10),則會造成程式執行期間錯誤。
***
▼解決方法也很簡單,就是套用enum即可。如果程式語言沒有支援,也可以套用ReplaceType Code with Class重構自己寫。如下所示,用BolldGroup類別來代表血型。
▼接著修改Person類別,將血型由int改成BloodGroup類別。
▼由測試案例就可看出重構前後的差異,下圖為重構前使用整數代表血型。
▼重構後。
***
友藏內心獨白:直接用enum就可以了。
沒有留言:
張貼留言