何谓重构
- 对软件内部结构的一种调整,目的是不改变软件可观察行为的前提下,提高其可理解性,降低修改成本。
两顶帽子
- 实现功能和重构就是两顶帽子,他们属于两种不同的行为,一次只能处于一种状态下,不能即实现功能又进行重构,但是实际情况是可能一会增加新功能一会要进行重构,要清楚你当前戴的是哪顶帽子。
为何重构
- 重构可以良好的控制自己的代码。重构是个工具,他有以下几个目的
- 改进软件设计
- 使软件更容易理解
- 帮助找到bug
- 提高变成速度
何时重构
- 三次法则:事不过三,三则重构。
- 添加功能时重构
当前代码无法让我轻松地添加新功能时重构
- 修补错误时重构
运用重构,让代码更具可读性,重构的过程可以帮助加深自己的理解,快速定位到bug
- 复审代码时重构
有助于团队中传播知识
怎么对经理说
- 集中在经历关注的点上说
- 如果不统一,如果认为重构之后更快,那就不要告诉经理
间接层和重构
计算机科学是这样一门科学:他相信所有问题都可以通过增加一个间接层来解决
- 价值
允许逻辑共享 分开解释意图和实现 隔离变化 封装条件逻辑
重构的难题
- 找到重构技术的局限性
- 数据库:业务与数据库结构紧密耦合,如果对象模型和数据库模型不断变化,则加入中间层更合理
- 修改接口:不能影响他人使用,可先用就接口调用新接口,同时提供新旧接口,将就接口标记为deprecated。
- 难以通过重构手法完成的设计改动:如果重构为另一个设计比较简单,则选择最简单的设计
- 何时不该重构:
- 项目快要结束时,那时你已经没有足够的时间了
- 代码是在太混乱,重构还不如重写
- 什么时候重写:现有代码根本不能正常运行,loudog
- 重构之前,原代码功能必须正常
重构与设计
- 预先做设计,但不必找出最优解,合理即可,随着问题加深,就可以进行重构设计了
重构与性能
-
- 时间预算法
-
- 持续关注法
-
- 统计数据法
- 重构不能凭空想象,需要用工具定位