本章主要讨论的是演变原则:
演变是与修改软件产品相关的一系列工作,用于:
* 满足新功能
* 更有效地运行
* 正常运行
1. 任何正在使用的大型软件系统都将经历不断的变化,它会一直变化,直到从头开始重写变得更划算
2. 任何经历持续变化的软件系统都会变得越来越复杂,并且变得越来越杂乱无章。
3. 如果没有坏就不要修理它
4. 解决问题,而不是症状,当软件出错时,你的责任是彻底理解错误的原因,而不只是草草分析一下,并对你认为的原因进行一个快速的修复。
5. 如果各方都同意对软件进行增强,那么第一件事就是更新软件需求规格说明,并获得批准
6. 发布之前的错误也会在发布后出现,最好的建议是废弃、替换、从头创建任何具有不良历史记录的组件。不要花钱填坑
7. 一个程序越老,维护起来就越困难
8. 语言影响可维护性,倾向于强制高内聚和低耦合的语言
9. 有时重新开始会更好,或完全重新设计和重新编码“最差”的组件。
10. 维护阶段比开发阶段产生的错误更多
11. 每次变更后都要进行回归测试,“变更很容易”的想法,会使变更更容易出错
12. 在优化前先进行性能分析,80% 的CPU周期将被 20% 的代码消耗,先去找到那些能够带来优化效果的 20% 的代码
演变是与修改软件产品相关的一系列工作,用于:
* 满足新功能
* 更有效地运行
* 正常运行
1. 任何正在使用的大型软件系统都将经历不断的变化,它会一直变化,直到从头开始重写变得更划算
2. 任何经历持续变化的软件系统都会变得越来越复杂,并且变得越来越杂乱无章。
3. 如果没有坏就不要修理它
4. 解决问题,而不是症状,当软件出错时,你的责任是彻底理解错误的原因,而不只是草草分析一下,并对你认为的原因进行一个快速的修复。
5. 如果各方都同意对软件进行增强,那么第一件事就是更新软件需求规格说明,并获得批准
6. 发布之前的错误也会在发布后出现,最好的建议是废弃、替换、从头创建任何具有不良历史记录的组件。不要花钱填坑
7. 一个程序越老,维护起来就越困难
8. 语言影响可维护性,倾向于强制高内聚和低耦合的语言
9. 有时重新开始会更好,或完全重新设计和重新编码“最差”的组件。
10. 维护阶段比开发阶段产生的错误更多
11. 每次变更后都要进行回归测试,“变更很容易”的想法,会使变更更容易出错
12. 在优化前先进行性能分析,80% 的CPU周期将被 20% 的代码消耗,先去找到那些能够带来优化效果的 20% 的代码