《重构-改善既有代码的设计》读书笔记

《重构》5W+2H的行文内容,结构很清楚。这是程序猿行文的风格。上周六写了Milp教程的小结,提及重构。楠哥周一京东上买了《重构》,趁着还有印象就抓紧看完了。信息量比较大,加深对重构的理解。

重构的第一步,为即将修改的代码建立一组可靠的测试环境,避免引入大量的bug.
重构技术就是以微小的步伐修改程序,如果你犯下了错误,很容易便于发现它
更改变量名是值得行为,绝对值得。好的代码应该清楚表达出自己的功能,变量名称是代码清晰的关键。
* 唯有写出人类容易理解的代码才是优秀的程序员。

What-何谓重构

  • 重构(名词):对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。
  • 重构(动词): 使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。
  • 重构提供了一种更高效且受控的代码整理技术。
  • 重构的目的是软件更容易被理解和修改。

    Why-为何重构

  • 重构改进软件设计,代码结构的流失是累积性的。
  • 重构使软件更容易理解,方便其他程序员理解,代码更易读,过去的代码不用记住。利用重构来理解不熟悉的代码。
  • 重构帮助找到bug
  • 重构提高编程速度,良好的设计是维持软件开发速度的根本。

    When-何时重构

  • 三次法则。事不过三,三则重构。
  • 添加新功能时重构
  • 审查代码时重构
  • 修补错误时重构;

    How-重构是一种摆脱困境的道路

    希望程序有以下的特征

  • 容易阅读

  • 所有逻辑都只在唯一地点指定
  • 新的改动不会危机现有行为
  • 尽可能简单表达条件逻辑

Who-怎么对经理说

  • 懂技术的,直接介绍重构
  • 只对质量感兴趣。提高质量。技术复审。
  • 进度驱动,不要告诉经理

    重构与间接层

  • 重构都为程序引入更多的间接层。
  • 间接层的价值
    • 允许逻辑共享
    • 分开解释意图和实现
    • 隔离变化
    • 封装条件逻辑

      重构的难题

  • 数据库
  • 修改接口
  • 难以通过重构手法完成的设计改动
  • 何时不该重构
    • 现有代码根本不能正常运作(重写)
    • 项目接近最后期限。

      重构与设计

  • 彼此互补,只要一个足够合理的解决方案来实现,对问题的理解加深后,日后修改成本不再高昂

    重构与性能

  • 时间预算法,性能要求极高的实时系统
  • 持续关注法
  • 90%统计法,进入性能优化阶段

    构筑测试体系

  • 单元测试,目的是为了提高程序员的工作效率
  • 功能测试,保证软件能正常运作,从客户角度保障质量,整个系统当作一个黑箱。

    关于代码的坏味道有21种情况

    重构的思路

  • 重新组织函数
  • 在对象之间搬移特性
  • 重新组织数据
  • 简化条件表达式
  • 简化函数调用
  • 处理概括关系
  • 大型重构

这边书在最后还有这些方法的索引,是一个重构方法的API,以及21中代码的坏味道目录。

文章目录
  1. 1. What-何谓重构
  2. 2. Why-为何重构
  3. 3. When-何时重构
  4. 4. How-重构是一种摆脱困境的道路
  5. 5. Who-怎么对经理说
  6. 6. 重构与间接层
  7. 7. 重构的难题
  8. 8. 重构与设计
  9. 9. 重构与性能
  10. 10. 构筑测试体系
  11. 11. 关于代码的坏味道有21种情况
  12. 12. 重构的思路
    1. 12.1. 这边书在最后还有这些方法的索引,是一个重构方法的API,以及21中代码的坏味道目录。
|