2022-03-13 第一章 软件复杂度剖析 笔记

要预测软件的复杂度,影响理解能力的第一要素是规模


Technical debt: 无法避免技术债

1. 针对目前需求和做出来的程序,看似合理的技术决策,都会随着软件的演变而变得不堪一击

2. 需要债务清晰可视化,通过方案主动地降低


Legacy system: 衰亡的老年期,遗留系统


软件开发遇到的拥堵

1. 函数存在副作用,调用时可能对函数的结果做了隐含的假设。

2. 类的职责繁多,导致开发人员不敢轻易修改,因为不知道会影响到哪些模块。

3. 热点代码被频繁修改变更,职责被包裹了一层又一层,没有清晰的边界。

4. 在系统某个角落,隐藏着伺机而动的bug。当诱发条件具备时,就会让整个调用链瘫痪。

5. 不同的业务场景包含了不同的例外场景,每种例外场景的处理方式都各不相同。

6. 同步处理代码与异步处理代码纠缠在一起,不可预测程序执行的顺序。


无序设计

1. 代码没有显而易见的进入系统中的路径。

2. 不存在一致性,不存在风格,也没有能够将不同的部分组织在一起,形成一个统一概念。

3. 系统中的控制流让人觉得不舒服,无法预测。

4. 系统中有太多的“坏味道” “不优雅”。

5. 数据很少放在它被使用的地方,经常引入额外的巴洛克式缓存层,视图让数据停留在更方便的地方。


避免 过度设计, 也要避免 设计不足

你可能感兴趣的:(2022-03-13 第一章 软件复杂度剖析 笔记)