引言
今天晚上我们来聊聊重构,最近又看了遍martin fowler的《重构-改善既有代码的设计》,若有所思,我们来结合实际说下他书中所说的“代码坏味道”。
坏味道列表
- 神秘命名:给每一个类、变量、函数都起一个便于好名字
- 代码重复:有重复代码想办法提炼成函数
- 过长函数:要把函数变短,因为越长越难理解
- 过长参数列表:缩短函数参数列表,太长容易迷惑,如果参数有相同项可以考虑抽成类
- 全局数据:全局数据容易造成诡异的bug,我们要封装起来搬移到函数中
- 可变数据:合理控制变量作用域
- 发散式变化:在一个模块需要变化是却引发了好几个函数的变动,就需要进行合理的函数搬移和提炼了
- 霞弹式修改:使用内联函数火内联类将本不该分散的逻辑拽回一处
- 依恋情结:当遇到2个模块直接函数交流频繁,就要考虑让他们2个呆在一起而不是分开在2个模块里
- 数据泥团:如果有一些数据项粘性比较大,就要考虑提取出类来
- 基本类型偏执:尝试性的考虑运用对象取代基本类型
- 重复的switch:多态优于switch
- 循环语句:尝试以管道取代循环
- 冗赘的元素:考虑内联函数或是内联类
- 夸夸其谈通用性:让函数声明是实际点,别一味的扩展扩展
- 临时字段:去掉临时条件和临时字段
- 过长的消息链:隐藏委托关系
- 中间人:别过度运用委托关系
- 内幕交易:如果2个模块之间有共同的兴趣,考虑再建立一个新的模块来代替
- 过大的类:类别太大,很容易产生重复代码来
- 异曲同工的类:将函数签名变得一支
- 纯数据类:要做好数据封装,移除设值函数
- 被拒绝的遗赠:谨慎使用继承体系
- 注释:当你感觉要撰写注释时,请先尝试重构,试着让所有注释都变得多余
总结
哈哈,有二十多个坏味道呢,这些其实我们要在日常的编码中去体会,去识别,然后去修改。相信我们代码会越写越好。