《重构》5W+2H的行文内容,结构很清楚。这是程序猿行文的风格。上周六写了Milp教程的小结,提及重构。楠哥周一京东上买了《重构》,趁着还有印象就抓紧看完了。信息量比较大,加深对重构的理解。
重构的第一步,为即将修改的代码建立一组可靠的测试环境,避免引入大量的bug.
重构技术就是以微小的步伐修改程序,如果你犯下了错误,很容易便于发现它
更改变量名是值得行为,绝对值得。好的代码应该清楚表达出自己的功能,变量名称是代码清晰的关键。
* 唯有写出人类容易理解的代码才是优秀的程序员。
What-何谓重构
- 重构(名词):对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。
- 重构(动词): 使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。
- 重构提供了一种更高效且受控的代码整理技术。
- 重构的目的是软件更容易被理解和修改。
Why-为何重构
- 重构改进软件设计,代码结构的流失是累积性的。
- 重构使软件更容易理解,方便其他程序员理解,代码更易读,过去的代码不用记住。利用重构来理解不熟悉的代码。
- 重构帮助找到bug
- 重构提高编程速度,良好的设计是维持软件开发速度的根本。
When-何时重构
- 三次法则。事不过三,三则重构。
- 添加新功能时重构
- 审查代码时重构
修补错误时重构;
How-重构是一种摆脱困境的道路
希望程序有以下的特征
容易阅读
- 所有逻辑都只在唯一地点指定
- 新的改动不会危机现有行为
- 尽可能简单表达条件逻辑
Who-怎么对经理说
- 懂技术的,直接介绍重构
- 只对质量感兴趣。提高质量。技术复审。
- 进度驱动,不要告诉经理
重构与间接层
- 重构都为程序引入更多的间接层。
- 间接层的价值
- 数据库
- 修改接口
- 难以通过重构手法完成的设计改动
- 何时不该重构
- 彼此互补,只要一个足够合理的解决方案来实现,对问题的理解加深后,日后修改成本不再高昂
重构与性能
- 时间预算法,性能要求极高的实时系统
- 持续关注法
- 90%统计法,进入性能优化阶段
构筑测试体系
- 单元测试,目的是为了提高程序员的工作效率
- 功能测试,保证软件能正常运作,从客户角度保障质量,整个系统当作一个黑箱。
关于代码的坏味道有21种情况
重构的思路
- 重新组织函数
- 在对象之间搬移特性
- 重新组织数据
- 简化条件表达式
- 简化函数调用
- 处理概括关系
- 大型重构