当有人说[噢,我想我们总有一天需要做这事]并因而企图以各式各样得挂钩(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检测正当功能,当然必须刀下留人。