常用的重构手法:
Extract Method、Move Method、Replace Conditional with Polymorphism、Self Encapsulate Field、Replace Type Code With State/Strategy
重构是融汇在代码中的一种技术,更是一种艺术。
Kent Beck说:“我不是个伟大的程序员,我只是个有着一些优秀习惯的好程序员”
一、What
名称解释:重构是对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。
动词解释:重构是使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。
注意:
只是整理代码吗?不止,提供了一种更高效且受控的代码整理技术。
不改变软件可观察行为:软件功能一如既往。
重构与性能优化
都不会改变组件的行为,只会改变其内部结构;
出发点不同:性能优化往往使代码较难理解,但是为了得到所需的性能你不得不那么做。
二、Why
是一种工具,目的:
1、重构改进软件设计
通过消除重复代码--方便未来修改
2、重构使软件更容易理解
利用重构来协助理解不熟悉的代码,可以真正动手修改代码,让它更好地反映出自己的理解
3、重构帮助找到bug
如果对代码进行重构,就可以深入理解代码的作为,并恰到好处地把新的理解反馈回去。
4、重构提高编程速度
改善设计、提升可读性
三、When
1、添加功能时重构
帮助理解需要修改的代码,更灵活的增加新特性
2、修补错误时重构
代码更具有可读性
3、复审代码时重构
极限编程中的“结对编程”形式,把代码复审的积极性发挥到了极致。
四、难题
1、数据库
在对象模型和数据库模型之间插入一个分隔层,隔离两个模型各自的变化。
2、修改接口
对于已发布接口,保留旧接口,必须同时维护新旧两个接口。让旧接口调用新接口。所以不要过早发布接口
五、NO
代码不能正常运作-重写,而非重构
项目已近最后期限
六、重构与设计
预先设计
重构:不做任何设计,有效运作之后,重构
预先设计出一个足够合理的解决方案就够了,再重构
七、重构与性能
虽然重构可能使软件运行更慢,但它也是软件的性能优化更容易。首先写出可调的软件,然后调整它以获取得足够速度。