没人想写烂代码。每个项目开局都是干净的——结构清晰,意图明确,模式合理。然后呢?代码量膨胀,事情开始变味。
这不是突然崩溃,是慢性病变。你会发现:同一套逻辑散落在三四个地方,相似的问题用了不同的解法,追踪一个函数得跳七八个文件。系统没全崩,但处处膈应人。
问题不在开发者偷懒。根本原因是没有强制执行的系统。
初期模式全靠口头约定:"我们一般这么写""跟着现有例子走"。没有 enforcement,这些模式必然漂移。每个新功能都是独立决策,相似问题得到不同解法,一致性慢慢瓦解。逻辑最终散落到路由、服务、工具函数、中间件里,理解一个功能得在文件间反复横跳。复杂度上去后,修一个 bug 带出两个新问题,副作用成了常态,改代码的信心持续走低。
系统优先的架构从设计上阻止腐烂。它不依赖人的自律,而是引入四类机制:
契约(Contracts)定义输入什么样、输出什么样、允许什么结构。消除模糊性,不用猜,直接知道该怎么用。
管道(Pipelines)把分散的逻辑收束成单一路径:请求 → 校验 → 转换 → 执行 → 响应。每个操作结构一致,没有隐藏行为,没有意外执行分支。
定义(Definitions)取代重复手写。API 被定义出来,数据模型被声明出来,工作流被结构化出来。全系统行为保持一致。
引擎(Engines)让一切自动运转。它读取定义、校验契约、执行管道。开发者不用记模式,系统强制执行。
传统代码库的轨迹是:复杂度递增,一致性递减,维护越来越难。系统驱动的代码库则相反:复杂度受控,一致性维持,维护反而变轻松。这个差距几个月后才显形。
这不是追求完美。系统也会有问题,但问题集中在系统层面,修复一处,全局受益。而传统代码库的问题是分散的,修完这里,那里又坏。
代码腐烂的本质,是结构债务的复利效应。越早建立系统,复利越站在你这边。
热门跟贴