《重构-改善既有代码的设计》读书笔记
2016-04-03 00:00
281 查看
在阅读这本书之前,我理解的重构是调整代码,让代码更加容易阅读。在我跟我同事的沟通中重构还包含了扩展功能的部分。
现在看来,我所理解的重构混淆了升级的概念,也只是了解了重构最表层的东西。重构的真正定义是:在不改变软件(这里的软件通常指一个方法)可观察行为的前提下,调整其结构。
什么是可观察行为?可观察行为是指使用软件所产生的结果。但是为什么要在不改变软件可观察行为的前提下,调整其结构呢?因为调整结构势必会改变代码的逻辑,既然逻辑都改变了又怎么保证你的重构没有问题呢。因此在不改变软件可观察行为的前提下,就是重构结果的测量标准。也只有在这个标准下,才能保证重构只是调整了软件的结构,而没有改变软件的可观察行为。
那么怎么测量软件的可观察行为没有改变呢?答案是单元测试。以前所理解的单元测试只是测试代码的功能。其实单元测试最大的作用是保证重构前后软件可观察行为的一致(代码只会编写一次,但会重构无数次)。
现在看来,我所理解的重构混淆了升级的概念,也只是了解了重构最表层的东西。重构的真正定义是:在不改变软件(这里的软件通常指一个方法)可观察行为的前提下,调整其结构。
什么是可观察行为?可观察行为是指使用软件所产生的结果。但是为什么要在不改变软件可观察行为的前提下,调整其结构呢?因为调整结构势必会改变代码的逻辑,既然逻辑都改变了又怎么保证你的重构没有问题呢。因此在不改变软件可观察行为的前提下,就是重构结果的测量标准。也只有在这个标准下,才能保证重构只是调整了软件的结构,而没有改变软件的可观察行为。
那么怎么测量软件的可观察行为没有改变呢?答案是单元测试。以前所理解的单元测试只是测试代码的功能。其实单元测试最大的作用是保证重构前后软件可观察行为的一致(代码只会编写一次,但会重构无数次)。
相关文章推荐
- 超越Jquery_01_isPlainObject分析与重构
- PHP代码维护,重构变困难的4种原因分析
- Repeater控件动态变更列(Header,Item和Foot)信息(重构cs)
- 重构代码的7个阶段
- superword中的模板抽取实践
- 代码整洁之道------它山之玉可以重构:身份证号码解析、验证工具(第一天)
- 它山之玉可以重构:身份证号码解析、验证工具(第二天)
- 它山之玉可以重构:身份证号码解析、验证工具(第三天)
- 重构之重与敏捷之轻---身份证号重构回顾
- 构建者模式之我见
- 编写好代码的10条戒律
- 《重构》
- Scala: 一次命令式到函数式的重构
- 重构-改善既有代码的设计Refactoring - Improving the Design of Existing Code
- Other: 重构—改善既有代码的设计003:代码的坏味道(Bad smells in Code)
- 如果想当一个好的程序猿
- 一段关于重构的小代码
- 《HTML重构》读书笔记&思维导图
- 深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点
- 深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP