软件为什么越做越复杂

阅读正文更多科技文章
约 3 分钟阅读
本文目录

每一个「顺便加上」,都会给未来留下一点重量。

复杂性从小决定里长出来

软件变复杂,未必始于一个宏大的错误。更多时候,它来自许多看似合理的小决定:为了一个尚未出现的场景保留选项,为一个临时需求添加分支,为方便将来复用提前抽象。每一个决定都很轻,加在一起却会改变理解系统的成本。

这并不意味着选项与抽象没有价值。问题在于它们出现的时间,以及所服务的需求是否真实。一个解决了眼前问题的直接实现,有时比一套预想未来的结构更容易维护,也更容易在需求变化时被替换。

让边界清楚,让内部简单

简单并不是省略必要的处理。输入校验、错误反馈、数据安全,都是系统可信赖的条件。它们需要被认真放在恰当的边界上,而不是因为追求少几行代码就消失。

边界清楚之后,内部往往可以更直接。一个功能是否已有合适的工具?平台是否已经提供相应能力?同一规则是否可以集中处理?这些问题帮助删除重复,也让下一位读代码的人更快知道系统在做什么。

给删除留出空间

增加一个功能时,我们很容易讨论新增多少价值;移除一个功能时,却容易忽略减少多少负担。每一项能力都需要解释、测试与维护。一个不再使用的选项仍然存在,就会持续要求后来的人理解它。

我想把简单看作一种持续的工作:确认真实需求,写下足够的实现,用恰当的检查证明它能工作,再允许它随着需求变化而改变。好的代码不仅能完成任务,也应该让下一次修改有处下手。

作者

Alan Lu's blog

本文为建站示例内容,等待替换为真实文章。