2.2两顶帽子
- 用重构技术开发软件时,时间分配给两种行为
- 添加新功能和重构
- 添加新功能时,不应修改既有代码,只添新功能
- 通过添加测试并让测试正常运行
- 可衡量自己工作进度
- 重构时不添加功能,只管调整代码结构
- 此时不应添加任何测试(除非发现有先前遗漏的)
- 只绝对必要(用以处理接口变化)时才修改测试
- 软件开发过程中,发现自己经常变帽子
- 首先我尝试添新功能
- 然后意识到:如果把程序结构改下,功能的添加会易得多
- 于是我换一顶帽子,做一会儿重构
- 程序结构调整好后,我又换上原先帽,继续添新功能
- 新功能正常后,又发现自己的编码造成程序难理解,又换上重构
- 无论何时我都清楚自己戴的是哪一顶帽
- 且明白不同帽子对编程状态
- 提出的不同要求
2.8重构与性能
- 重构对程序的性能将造成怎样的影响?
- 为了让软件易于理解,我常会做出一些使程序运行变慢的修改。
- 这是一个重要的问题。
- 不赞成为了提高设计的纯洁性而忽视性能,把希望寄托于更快的硬件身上也绝非正道。
- 虽然重构可能使软件运行更慢,但它也使软件的性能优化更容易。
- 除了对性能有严格要求的实时系统,其他任何情况下“编写快速软件”的秘密就是:先写出可调优的软件,然后调优它以求获得足
够的速度
- 3种编写快速软件的方法
- 最严格的是时间预算法,只用于性能要求极高的实时系统
- 用这种方法,分解你的设计时就要做好预算,给每个组件预先分配一定资源,包括时间和空间占用
- 每个组件绝对不能超出自己的预算,
- 就算拥有组件之间调度预配时间的机制也不行
- 这种方法高度重视性能,对心律调节器一类的系统必需的,
- 因为在这样的系统中迟来的数据就是错误的数据
- 但对其他系统(我经常开发的企业信息系统),追求高性能就有过分