1. 重构
1.1 问题
- 生产进度的压力:
- 重写整个程序(理想情况);
- 复制、修改现有系统;
- 不知道如何重构;
- 如果利益是长远的,为什么现在做呢?可能收获利益之时,就已经不在职位上了;
- 代码重构是额外工作,老板看不到付出;
- 重构可能破坏现有程序;
1.2 回答
- 重构可以带来短期利益和长期利益。
- 已有重构工具和技术,可快速,无痛苦完成;
- 重构虽然花费精力和时间开销,当可在其他阶段减小相应开销;
- 当重构成为软件开发规则的一部分时,人们就觉得它必不可少;
2. 做法
- 了解如何重构、在哪儿重构;
- 合理利用重构工具;
- 遵守重构规则;
- 团队保持共识;
3. 安全性
安全性是令人关系的议题,特别是大型系统。许多应用程序由于财政、法律和道德伦理的压力,需要不间断、可靠、不出错的提供服务。
3.1 如何进行安全重构
- 选择:
- 相信编码功力;
- 相信编译器能捕捉错误;
- 相信测试能测出错误;
- 相信代码复审能捕捉错误;
- 局限性:
- 人人都可能犯错;
- 一些微妙错误编译器无法捕捉;
- 测试不可能覆盖所有情况,测出所有问题;
- 代码复审很可能没有,或出错,或没找到错误;
- 方案:
- 定义并快速实现一个重构工具的原型,用以检查某项重构是否可以安全地施加于程序上。若可能,则重构。这避免了大量可能因为人为错误引入的 bug。
4. 复用
4.1 问题(类似于重构)
- 不知道“该复用什么”或“如何复用”;
- 对采用复用方法缺乏动力,除非有短期利益;
- 开销、学习曲线和探索成本;
- 项目压力;
4.2 回答(原则)
- 对员工进行培训;
- 尽量获取短期利益;
- 减少开销;
- 安全引入新技术;
ps
:这些不仅仅可用于重构和软件复用,还可用于技术传播。
参考
- 《重构-改善既有代码的设计》(第13章)