重构:改变既有代码的一剂良药
1. 什么是系统重构?
它是一套严谨而安全的过程方法,它通过一系列行之有效的方法与措施,保证软件在优化的同时,不会引入新的bug,保证软件改造的质量。
2. 系统重构的概念
系统重构,就是在不改变软件的外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更。
3. 如何保证重构是安全的、可靠的、没有风险的?
系统重构,对于客户来说应当是完全透明的。我们为之做了很多工作,而他们应当完全感觉不到它的存在。
4. 系统重构的保险索?
测试,每修改一点点就进行一个测试,再修改一点点。贯穿整个重构过程的是不断地测试。
5. 重构首先做什么?
当我们开始系统重构的时候,不是着手去修改代码,而是首先建立测试机制。
6. 重构的测试标准是什么?
测试标准只有一个,就是与之前的功能完全保持一致。
7. 重构中的测试应该是手工测试还是自动化测试?
重构一个遗留的系统,往往设计混乱,接口不清晰,程序相互依赖,这使得最初的自动化测试变得非常困难而不切实际,因此,一开始我们所能采用的还是手工测试。
8. 重构过程:
在重构之前首先将系统启动起来,执行相应的功能,得到各自相应的输出。然后开始重构,每次重构对代码的修改量不要太大,花费的时间不要太长。每做一次重构,修改一点儿代码,然后提交,对系统进行一次测试,如果系统依然保持与以往一样的功能,重构成功,继续进行下一次重构。随着重构的不断深入,我们的程序开始在改善,程序渐渐呈现出高内聚低耦合,此时可以逐渐进行自动化测试。
9. 小步快跑
系统重构应当避免大设计,而尽量采用一个一个连续不断的小设计。重构的周期越长,说明你考虑的问题越复杂,最终出错的概率也就越大。
10. 软件修改的四种动机
a. 增加新功能
b. 原有功能有bug
c. 改善原有程序的结构
d. 优化原有系统的性能
11. 软件的外部质量衡量标准
客户对软件功能需求与非功能需求的满意度。
12. 系统重构的价值
保证开发人员(即使是新手)能够轻易看懂软件代码,能够保证日后的每一次软件维护都可以轻易地完成,能够保证日后每一次需求变更都能轻易进行。
13. 提高软件可读性
软件的业务逻辑要清晰。
14. 糟糕设计零容忍度策略
先重构系统使之首先适应新的需求,再顺理成章去实现这些需求。
重构方法工具箱
将密密麻麻的程序代码按照功能划分在数个函数中,可以有效地提高代码的可读性,将程序中各种各样的变量和函数合理给予命名,并适时注释,也是在提高代码可读性,将各种各样品种繁多的函数恰当分配到各自的对象中合理地组织起来,则是在有效提高系统的可维护性与易变性。
1. 重构方法分为几个层次?
方法的重构、对象的重构、对象间的重构、继承体系间的重构、组织数据的重构与体系架构的重构。
2. 抽取方法
前期工作:增加注释、调整顺序,重命名变量,进行分段操作,随后将通过注释分段存放各个代码段提取出来,形成单独的函数。
3. 抽取类
将抽取出来的方法放到相应的类中,使原程序变成引用。
4. 抽取接口
将相似的,或者同类型的代码抽取出来形成接口,以及接口下的多个实现。