當(dāng)有人說[噢,我想我們總有一天需要做這事]并因而企圖以各式各樣得掛鉤(hooks)和特殊情況來處理一些非必要的事情,這種壞味道就出現(xiàn)了。那么做的
結(jié)果往往造成系統(tǒng)更難理解和維護。如果所有裝置都會被用到,那就值得那么做;如果用不到,就不值得。用不上得裝置只會擋你得路,所以,把它搬開吧。
如果你的某個abstract class其實沒有太大作用,請運用Collapse Hierarchy(334)。非必要之delegation(委托)可運用Inline Class(154)除掉。如果函數(shù)的某些參數(shù)未被用上,可對它實施Remove Parameter(277)。如果函數(shù)名稱帶有多余的抽象意味,應(yīng)該對它實施Rename Method(273)讓它實現(xiàn)一些。
如果函數(shù)或class的唯一用戶是test cases(測試用例),這就飄出了壞味道Speculative Generality。如果你發(fā)現(xiàn)這樣的函數(shù)或clss,請把它們連同其test cases都刪掉。但如果它們的用途是幫助test cases檢測正當(dāng)功能,當(dāng)然必須刀下留人。
如果你的某個abstract class其實沒有太大作用,請運用Collapse Hierarchy(334)。非必要之delegation(委托)可運用Inline Class(154)除掉。如果函數(shù)的某些參數(shù)未被用上,可對它實施Remove Parameter(277)。如果函數(shù)名稱帶有多余的抽象意味,應(yīng)該對它實施Rename Method(273)讓它實現(xiàn)一些。
如果函數(shù)或class的唯一用戶是test cases(測試用例),這就飄出了壞味道Speculative Generality。如果你發(fā)現(xiàn)這樣的函數(shù)或clss,請把它們連同其test cases都刪掉。但如果它們的用途是幫助test cases檢測正當(dāng)功能,當(dāng)然必須刀下留人。