总结一下类别代码的移除
要移动一些类别代码和switch表达式,有两种方法:
1、用基于同一父类的不同子类来代替不同的类别。
2、用一个类的不同对象来代替不同的类别。
当不同的类别具有比较多不同的行为时,用第一种方法。当这些类别的行为非常相似,或者只是差别在一些值上面的时候,用第二个方法。
普遍的代码异味
类别代码和switch表达式是比较普遍的代码异味。此外,还有其他的代码异味也很普遍。
下面是大概的异味列表:
◆代码重复
◆太多的注释
◆类别代码(type code)
◆switch或者一大串if-then-else-if
◆想给一个变量,方法或者类名取个好名字时,也怎么也取不好
◆用类似XXXUtil, XXXManager, XXXController 和其他的一些命名
◆在变量,方法或类名中使用这些单词“And”,“Or”等等
◆一些实例中的变量有时有用,有时没用
◆一个方法的代码太多,或者说方法太长
◆一个类的代码太多,或者说类太长
◆一个方法有太多参数
◆两个类都引用了彼此(依赖于彼此)