重构的定义
- 名词:对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低修改成本
- 动词:使用一系列重构手法,在不改变软件可观察行为的前提下调整其结构
- 所以重点是使软件更容易被理解和修改,不改变软件可观察行为即软件功能一如既往
何时重构
- 添加功能时重构
重构是一个快速流畅的过程,帮助理解代码逻辑 - 修补错误时重构
- 复审代码时重构
间接层
- 大多数重构都为程序引入了更多间接层,重构往往把大型对象拆成多个小型对象,把大型函数拆成多个小型函数
- 间接层的价值:
1:允许逻辑共享
2:分开解释意图和实现,根据新的类或函数名称
3:隔离变化,不需要担心一个对象的修改会影响到其他使用的地方
4:封装条件逻辑,使用多态方式灵活而清晰地表达条件逻辑
重构的难题
现在我们只能明显看到重构的好处,但是还没有获得足够的经验知道其局限性
- 数据库
当数据库模型和对象模型变的不稳定时,可以在之间插入一个分隔层,帮助隔离两个模型各自的变化 - 修改接口
重构修改已发布接口时必须做到原始功能的兼容,可以尽量让旧接口调用新接口并将老接口标记为deprecated,并且谨慎发布接口 - 难以通过重构手法完成的设计改动
可能存在某些核心设计决策,无法以重构手法修改,可能就需要对选择候选设计方案时的难度进行考虑。 - 何时不该重构
将大块头软件重构为封装良好的小型组件,然后逐一对组件做出重构或重建的决定
重构与性能
不应该为了提高设计的纯洁性而忽视性能
网友评论