重构
重构这个词在不久前第一次走进我的生活
以前也听说过重构,只是听听并没有深刻的认识
这是项目需要,老大说你把这一块明天给重构好,然后让我检查
没有了解过也不知道什么是重构,就开始干了怎么干
按自己的理解就是
- 把重复的代码给提到一个方法里面去
- 检查变量名称是否符合规范
- 检查方法参数是否太多
- 检查逻辑顺序是否合适
- 是否有直接使用字符串的给提成常量
- 一个类的内部是否承载了过多的职责
- 方法,属性,变量的修饰符是否合适
- 是否会有数据库N+1的问题
- 是否会出现数据多的时候,内存会不会死掉
- 下次别人看到这块代码的时候能不能很快的就理解什么意思
- 排版是否美观
后来自己认为重构完的代码没有问题了,老大一检查总能发现一些小细节的问题
结果就是反复修改,最后老大推荐了一本书给我,告诉我好好看看
《重构,改善既有代码的设计》
慢慢的我才理解,为什么要有重构,那么也就得先知道什么是重构
原来我的理解都是具体的怎么干
却并不知道为什么要重构,什么时候重构,重构成什么样才是合适的
重构有什么样的好处,有什么样的坏处
看完这本书,才理解的更全面一点,首先为什么要有重构
这本书名,已经很明确的告诉我们了,改善既有代码的设计
一定是改善么,会不会有的重构完之后,还没有之前好使的?
代码设计改了,会不会影响原来的性能?
重构完之后,代码是不是确实比原来好维护了?
带着重重的疑问,我开始边重构,边阅读这本书
重构第一层意思:
对软件内部结构的一种调整,目的在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本
重构第二层意思:
使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构
重构
- 可以使软件更容易被理解
- 帮助找到bug
- 提高编程速度
何时开始重构
1. 三次法则
第一次做某件事的时候,尽管去做
第二次做类似事的时候会产生反感
第三次再做类似的事的时候,就应该重构
2.添加新功能时
原来代码的设计无法帮助我轻松添加我所需要的功能
3.修补错误时重构
4.复审代码时重构
可以重构的信号
- 重复的代码
- 过长的函数
- 过大的类
- 过长的参数列表
- 发散式的变化
- 霰弹式修改
- 令人迷惑的暂时字段
- 过度耦合的消息链
- 中间人
- 过多的注释