重构系列2.代码的坏味道
2009-06-14 22:47
387 查看
1.重复的代码(重复的代码修改时需要修改多处,容易出现不一致)
如果一个类内有多个函数有重复的代码,可以提取出来放到一个新函数中,然后让用到这些代码的函数调用新函数;如果互为兄弟的两个子类中含有重复代码,则可以提取出来放到父类中;如果其功能骨架相同,可用模版方法模式;如果毫不相干的两个类中有重复代码,可提取出来放到一个单独的类中,然后通过复合调用新类。
2.过长函数(难以理解)
函数过长时可以把它分解为多个小型函数,以函数做什么而不是怎么做命名函数,如果函数参数列过长,可以考虑引入一个参数对象,如果还不行,就可以考虑用函数对象代替函数。
3.类的职责过多(单一职责原则)
一个类应该专心做好一件事情,不要做太多事情,如果类的职责过多,可以把相关的实例变量和函数提炼到一个新类中。
4.过长参数列(过长参数难以记忆,而且不易理解)
可以引进一个参数对象或者用函数对象代替函数。
5.一个类受多种变化的影响(外界的多种变化都需要修改某个类)
把每种变化可能影响的方面提炼成单独的类,使每个类只受某一种外界变化的影响。
6.一种变化影响多个类(外界的某种变化需要修改多个类)
把这种改变的影响提炼到一个类中。
7.某个类中的函数对另外一个类依赖更多
如果某个类中的函数对另一个类的依赖大于它所在的类,可以考虑把该函数移到它依赖性最大的类中。
8.相同数据项
如果两个类中有多个相同的字段或者多个函数签名中有相同的参数列,可以把他们提取出来放到一个单独的类中。
9.switch语句
看到switch语句,可以考虑用多态替换它,至少可以提炼到单独的函数中。
10.平行继承体系
两个平行的继承体系,修改其中一个结构中的类则要相应的修改另一个结构中的类,则可以考虑让一个体系中的实体引用另一个体系中的实体。
11.冗余类
如果一个类没有存在的价值,则可以消除它。
12.夸夸其谈未来性
不要对未来做出过多的假设,只要做出合理的假设。
13.令人迷惑的暂时字段
如果某个实例变量只在特定情况下才需要,并不是所有实例都需要,则可以考虑把该实例变量和与其相关的代码放到一个新类中。
14.单纯的数据类
不要使用单纯的数据类,应该让他们承担一些责任。
如果一个类内有多个函数有重复的代码,可以提取出来放到一个新函数中,然后让用到这些代码的函数调用新函数;如果互为兄弟的两个子类中含有重复代码,则可以提取出来放到父类中;如果其功能骨架相同,可用模版方法模式;如果毫不相干的两个类中有重复代码,可提取出来放到一个单独的类中,然后通过复合调用新类。
2.过长函数(难以理解)
函数过长时可以把它分解为多个小型函数,以函数做什么而不是怎么做命名函数,如果函数参数列过长,可以考虑引入一个参数对象,如果还不行,就可以考虑用函数对象代替函数。
3.类的职责过多(单一职责原则)
一个类应该专心做好一件事情,不要做太多事情,如果类的职责过多,可以把相关的实例变量和函数提炼到一个新类中。
4.过长参数列(过长参数难以记忆,而且不易理解)
可以引进一个参数对象或者用函数对象代替函数。
5.一个类受多种变化的影响(外界的多种变化都需要修改某个类)
把每种变化可能影响的方面提炼成单独的类,使每个类只受某一种外界变化的影响。
6.一种变化影响多个类(外界的某种变化需要修改多个类)
把这种改变的影响提炼到一个类中。
7.某个类中的函数对另外一个类依赖更多
如果某个类中的函数对另一个类的依赖大于它所在的类,可以考虑把该函数移到它依赖性最大的类中。
8.相同数据项
如果两个类中有多个相同的字段或者多个函数签名中有相同的参数列,可以把他们提取出来放到一个单独的类中。
9.switch语句
看到switch语句,可以考虑用多态替换它,至少可以提炼到单独的函数中。
10.平行继承体系
两个平行的继承体系,修改其中一个结构中的类则要相应的修改另一个结构中的类,则可以考虑让一个体系中的实体引用另一个体系中的实体。
11.冗余类
如果一个类没有存在的价值,则可以消除它。
12.夸夸其谈未来性
不要对未来做出过多的假设,只要做出合理的假设。
13.令人迷惑的暂时字段
如果某个实例变量只在特定情况下才需要,并不是所有实例都需要,则可以考虑把该实例变量和与其相关的代码放到一个新类中。
14.单纯的数据类
不要使用单纯的数据类,应该让他们承担一些责任。
相关文章推荐
- 重构系列之重构的标志:《重构》代码的坏味道
- 代码的坏味道——何时该考虑代码的重构(重构—读书笔记系列)
- 重构-代码的坏味道
- 《重构》读书笔记(四)——第三章 代码的坏味道
- 『重构--改善既有代码的设计』读书笔记----代码坏味道【5】
- 代码的坏味道之四 ——译自《重构》
- 代码中的坏味道-->ruby重构有感(二)--未完待续!
- 代码的坏味道之二——译自《重构》
- 【整理】【重构之改善既有代码的设计】代码的坏味道目录
- 重构 之 总结代码的坏味道 Bad Smell (一) 重复代码 过长函数 过大的类 过长参数列 发散式变化 霰弹式修改
- 重构改善既有代码的设计--代码的坏味道
- 读书笔记之《重构》第三章—代码的坏味道
- 重构之代码坏味道
- 重构 之代码的坏味道(Bad smell)
- 测试驱动开发系列之六--给遗留代码做重构
- 《重构---改善既有代码的设计》总结二之代码的坏味道
- 代码坏味道与重构
- 代码重构/坏味道详解
- 『重构--改善既有代码的设计』读书笔记----代码坏味道【3】
- 代码坏味道,重构与模式