第一章 重构,第一个案例
重构的基本定义
重构是在不改变软件可观察行为的前提下改善其内部结构。代码并不是先设计好再去编写的,我们首先要保证可正常运行,再去重构。 在代码写之后改进它设计。
如果你发现自己需要为程序添加一个特性,而代码结构使你无法很方便地达成目的,那就先重构那个程序,使特性的添加比较容易进行,然后再添加特性。
重构前,先检查自己是否有一套可靠的测试机制。这些测试必须有自我检验能力。
抽取方法时注意函数中的局部变量和参数。 p9
重构技术就是以微小的步伐修改程序。如果你犯下错误,很容易便发现它。
java的很多IDE中已经实现了Extract Method。
更改变量名是提高代码清晰的关键。
第二章 重构原则
重构的两个定义
1 重构(名词):对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。
2 重构(动词):使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。大多时候我们做的是两件事情:添加新功能和重构。我们经常交替进行,但是一定要记住我们现在做的事哪件事。
不建议特别拨出时间来做重构,不要为了重构而重构。你之所以重构,是因为你想做别的什么事,而重构可以帮助你把那些事做好。
何时进行重构
1 添加功能时
2 修补错误时
3 复审代码时重构的难题
1 数据库
2 修改接口
3 难以用重构手法完成的设计改动何时不该重构
重构之前必须起码能够在大部分情况下正常运行。
如果项目已近最后期限,你也应该避免重构编写快速软件的方法
1 时间预算法 在开发实时系统上比较常见
2 持续关注法 不实用
3 性能提升法 推荐性能提升法
采用这个方法时,你编写构造良好的程序,不对性能投以特别的关注,直至进入性能优化阶段----通常是在开发的最后阶段。
你首先应该用一个度量工具来监控程序的运行,他告诉你程序中那些地方大量消耗时间和空间。
和重构一样,你应该小幅度进行修改。每一步都需要编译、测试、再度量。如果没有能提高性能,就应该撤销此次修改。