《重构》读后感2--什么时候应该开始或结束重构
2016-02-16 16:37
211 查看
当遇到一下情况时应该开始重构代码:
1.遇到重复代码时:如果遇到一个以上有相同程序结构,需要考虑将他们合并。比如:
(1)同一个类的两个函数含有相同的表达式(要提炼重复代码)
(2)两个互为兄弟的子类内含有相同的表达式(提炼相同代码形成方法放入超类中)
(3)遇到两个互不相关的类出现重复代码,考虑将重复代码提炼到一个独立类中,原来的两个类分别调用第三个类的方法(最好自行确定该函数应该放在哪个位置)
2.函数过长
整理函数的技巧:
(1)取出多余参数和临时变量;保证一个函数只用于完成一件事;判断提炼成方法的技巧是寻找注释,它通常能指出代码用途和实现手法之间的语义距离,如果代码前方有一行注释,就可以考虑将这段代码替换成函数;就算是只有一行函数,如果它需要以注释来说明,也值得将它提炼到独立函数中。
(2)条件表达式和循环常常也是提炼的信号
3.过大的类
4.函数含有过长参数列
发散式变化
主要判别特征是需求变动一次时需要同时调整多个类的代码。(针对某一外界变化的所有相应修改都只应该发生在单个类中)
5.霰弹式修改
主要判断依据是遇到某种变化时,必须在许多不同的类中做许多小修改。(解决方法是将所有需要修改的代码放进同一个类,如果眼下没有合适的类可以安置这些代码,就创建一个)
6依恋情结
判断依据:某函数对某个类的兴趣高于对自己所处类的兴趣。(解法:把这个函数移至另一个地方,如果有些函数依恋多个类的数据,就将依恋部分提取出来并移到相应类中)
7.数据泥团
8.基本类型偏执
9.switch Statements(switch惊悚现身)
10.平行继承体系
11.冗赘类
12.夸夸其谈未来性
13.狎昵关系
判断依据:两个类过度的数据交互和依赖(需要划清界限)
14.过多的注释
1.遇到重复代码时:如果遇到一个以上有相同程序结构,需要考虑将他们合并。比如:
(1)同一个类的两个函数含有相同的表达式(要提炼重复代码)
(2)两个互为兄弟的子类内含有相同的表达式(提炼相同代码形成方法放入超类中)
(3)遇到两个互不相关的类出现重复代码,考虑将重复代码提炼到一个独立类中,原来的两个类分别调用第三个类的方法(最好自行确定该函数应该放在哪个位置)
2.函数过长
整理函数的技巧:
(1)取出多余参数和临时变量;保证一个函数只用于完成一件事;判断提炼成方法的技巧是寻找注释,它通常能指出代码用途和实现手法之间的语义距离,如果代码前方有一行注释,就可以考虑将这段代码替换成函数;就算是只有一行函数,如果它需要以注释来说明,也值得将它提炼到独立函数中。
(2)条件表达式和循环常常也是提炼的信号
3.过大的类
4.函数含有过长参数列
发散式变化
主要判别特征是需求变动一次时需要同时调整多个类的代码。(针对某一外界变化的所有相应修改都只应该发生在单个类中)
5.霰弹式修改
主要判断依据是遇到某种变化时,必须在许多不同的类中做许多小修改。(解决方法是将所有需要修改的代码放进同一个类,如果眼下没有合适的类可以安置这些代码,就创建一个)
6依恋情结
判断依据:某函数对某个类的兴趣高于对自己所处类的兴趣。(解法:把这个函数移至另一个地方,如果有些函数依恋多个类的数据,就将依恋部分提取出来并移到相应类中)
7.数据泥团
8.基本类型偏执
9.switch Statements(switch惊悚现身)
10.平行继承体系
11.冗赘类
12.夸夸其谈未来性
13.狎昵关系
判断依据:两个类过度的数据交互和依赖(需要划清界限)
14.过多的注释
相关文章推荐
- Linux之切换用户以及查看容量
- centos crontab不执行疑点
- 自定义Adapter
- 【乐意黎原创】Sublime Text 3 build 3103 license 四个供研究使用
- ABAP 内表的行列转换-NEW
- 欢迎使用CSDN-markdown编辑器
- cxf demo
- 数据库性能优化之SQL语句优化
- spring 中配置bean的注入是<property>的name与与ref的id名需要一样吗??
- 【五校联考3day2】C
- onMeasure方法简述
- 创建微服务?请先回答这10个问题
- Android微信文件分享
- Netty4.0中LengthFieldPrepender编码器学习心得(二)
- 创建微服务?请先回答这10个问题
- 创建微服务?请先回答这10个问题
- win2003配置apache2.2下,php页面出现乱码的解决方法
- 无限极分类
- java中key值可以重复的map:IdentityHashMap
- nginx 配置 php 的 CI 框架的web