Skip to main content

软件的复杂度

📅 2026-04-03 ✏️ 2026-04-03 CS
No related notes

1 · 软件的复杂度

S 业务成功驱动软件规模持续增长 C 偶然复杂度随团队扩大和赶工不断膨胀,侵蚀开发效率 Q 如何区分并控制软件的复杂度? A 识别本质 vs 偶然复杂,通过统一技术栈、一致命名与抽象、减少临时补丁来遏制偶然复杂度


https://developer.aliyun.com/article/1353112

软件复杂 = 本质复杂 + 偶然复杂

本质复杂来自业务本身,不可消弭; 偶然复杂来自实现方案技术选择,常被组织和工程实践放大。

业务成功 -> 本质复杂度⬆ -> 支持业务,偶然复杂度⬆

团队规模扩大,更容易制造偶然复杂度(堆高认知负担):

  • 赶上线的 flag/if,而不是调整设计
  • 统一技术栈里面混入个人喜好的异构技术
  • 同一领域在不同模块使用不同命名

如何控制复杂度(历史代码、技术选型、组织协作):统一技术栈、强化命名与抽象一致性、减少临时补丁式开发、重视问题空间理解