一:什么是重构
名词:对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。
动词:使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。
一般而言,重构都是对软件的小改动。
两顶帽子:添加新功能,以及重构。
二:为何重构
1、重构改进软件设计
2、重构使软件更容易理解
为了让代码变得更容易理解,可以适当舍弃部分性能。
3、重构帮助找到bug
4、重构提高编程速度
三:何时重构
重构应该随时随地进行,不应该为了重构而重构。
重写比重构还容易时,舍弃重构,直接重写
1、三次法则:事不过三,三则重构。
2、添加功能时重构
原代码的设计无法让我轻松添加新特性。
3、fixbug时重构
4、复审代码时重构
总结:
- 难以阅读的程序,难以修改
- 逻辑重复的程序,难以修改
- 添加新行为时,需要修改已有代码,难以修改
- 带复杂条件逻辑的程序,难以修改
因此我们希望程序:
- 容易阅读
- 所有相同逻辑都在唯一地点指定
- 新的改动不危机现有行文
- 尽可能简单表达条件逻辑
四:怎么对项目经理说
- 质量驱动:避免线上故障
- 不要告诉项目经理
五:重构的难题
- 延缓新功能的开发
- 代码所有权
- 测试(自测...)
- 遗留代码
- 数据库(数据迁移...)
六:重构与设计
有了设计(技术方案),我可以思考更快,但是其中充满小漏洞。
七:重构与性能
为了让软件易于理解,我们常会做出一些使程序运行变慢的修改。
- 时间预算法,这通常只用于性能要求极高的实时系统,给每个组件预先分配一定资源
- 持续关切法,在任何时间做任何事时,都要设法保持系统的高性能。
八:自动化重构
- Eslint配置 - 如:引入但未被使用的变量、函数