2. 过长函数(1) “同一个类的两个函数含有相同的表达式。”这时提炼出重复的代码,然后两个地方同时调用提炼出来的那一段代码。(2)“ 两个互为兄弟的子类内含有相同的表达式。”这时将代码提炼出来放入超类中。如果两个子类的代码并不是完全相同,那么考虑使用模板模式。(3) “两个毫不相关的类出现重复代码。”这时将重复代码提炼到一个单独的类中。
每当感觉需要以注释来说明的时候,我们就把需要说明的东西写进一个独立函数中,并以其用途命名。
4. 过长参数类通常如果类内的数个变量有着相同的前缀或字尾,这意味着有机会把它们提炼到某个组件内。
5. 发散式变化
6. 散弹式修改针对某一外界变化的所有相应修改,都只应该发生在单一类中,而这个新类的所有内容都应该反应此变化。
7. 依恋情节把所有需要修改的代码放进同一个类,如果这个类不存在,就创建一个。
8. 数据泥团函数对某个类的兴趣高过对自己所处类的兴趣。这时应该讲这个方法放至另一个类中。
9. 基本类型偏执找出相同的字段并提炼至一个独立的对象中。一个好的评判方法是:删掉众多数据项中的一项,这么做其他数据有没有因而失去意义?如果他们不再有意义,这就是个明确的信号:你应该为他们产生一个新对象。
10. switch惊悚现身用类替代有关系的基本类型。
11. 平行继承关系尽量避免使用switch
12. 冗余类在这种情况下,每当你为某个类增加一个子类,必须也为另一个类相应增加一个子类。消除这种重复性的一般做法是:让一个继承体系的实例引用另一个继承体系的实例。
13. 夸夸其谈未来性如果一个类所得不值其身价,那么它就应该被删除。
14. 令人迷惑的暂时字段如果所有装置都会被用到,就值得这么做,如果用不到,就删除。
15. 过度耦合的消息链如果临时字段过多,将他们放入一个类中,并在需要的地方引用这个对象。
16. 中间人如果你看到用户向一个对象请求另一个对象,然后再向后者请求另一个对象,然后再请求另一个对象。。。这就是消息链。
17. 亲昵关系如果一个类接口中有许多的函数都是委托给其他类,那么就是过度运用。应减少这种情况。
18. 异曲同工的类要避免类之间过分亲密。
19. 不完美的库类如果两个函数在做同一件事,却有着不同的签名,这就需要改正。
20. 纯稚的数据类
21. 被拒绝的遗赠是指:它们拥有一些字段,以及用于访问这些字段的函数,如此之外什么都没有。
22. 过多的注释
23.如果你感觉需要撰写注释时,请先尝试重构,试着让注释变得多余。
联系客服