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