3.1 从严格规格到纯氛围的光谱
认识了三种方法论后,现在是时候看它们怎么排位了。
方法论光谱
把所有软件开发方法论放在一条线上,从最严格到最灵活:
光谱定位详解
光谱位置:较严格
SDD
文档量:结构化规格
前置成本:高
灵活性:中等
适合场景:企业级系统、API 开发、跨团队协作
前置成本:高
灵活性:中等
适合场景:企业级系统、API 开发、跨团队协作
光谱位置:中等
TDD
文档量:测试即文档
前置成本:中等
灵活性:中高
适合场景:复杂业务逻辑、长期维护项目
前置成本:中等
灵活性:中高
适合场景:复杂业务逻辑、长期维护项目
光谱位置:最灵活
Vibe Coding
文档量:无或极简
前置成本:极低
灵活性:极高
适合场景:原型、MVP、个人项目
前置成本:极低
灵活性:极高
适合场景:原型、MVP、个人项目
对"歧义"的三种态度
这条光谱背后,隐藏着一个更深层的问题——歧义。
每种方法论本质上都在处理"需求不明确"这个问题,只是态度截然不同:
TDD
消除歧义(用测试)
写一个测试,把"期望行为"固定下来。测试就是约束——通过测试的定义是唯一的,没有歧义。
SDD
消除歧义(用规格)
写一个规格,把"系统契约"固定下来。OpenAPI 里写的是整数就是整数,不会误解。
Vibe Coding
接受歧义(让 AI 猜)
用自然语言描述,留下大量理解空间。AI 用统计推断填补歧义,大部分时候猜对,但有时猜错。
"在人类编写的代码库中,歧义的成本是几小时。在 AI 生成的代码库中,歧义的成本是数千行听起来合理但微妙错误的输出。" — Vishal Mysore
一个关键辩证
这里有一个很多人忽略的辩证:
TDD 的"肮脏秘密"
TDD 回答的是"这段代码正确吗?"——但它不回答"这是正确要构建的东西吗?"
一个测试覆盖率完美的代码库,仍然可能在构建错误的产品。
这就是为什么 SDD 在 TDD 之上是有意义的:SDD 先确认"做的东西对不对",TDD 再确认"代码对不对"。
一个测试覆盖率完美的代码库,仍然可能在构建错误的产品。
这就是为什么 SDD 在 TDD 之上是有意义的:SDD 先确认"做的东西对不对",TDD 再确认"代码对不对"。
📌 本节核心要点
| 概念 | 要点 |
|---|---|
| 方法论光谱 | 瀑布(最严格)→ SDD → TDD → 敏捷 → Vibe Coding(最灵活) |
| 对歧义的态度 | TDD 用测试消除,SDD 用规格消除,Vibe Coding 接受歧义 |
| TDD 的盲区 | 回答"代码对不对",但不回答"做的东西对不对" |
| 核心规律 | 越严格的方法论前置成本越高,但长期越可靠 |
知识检查
问题 1:把五种方法论按"严格程度"从高到低排列。
查看答案
瀑布模型 → SDD/BDD → TDD → 敏捷(Scrum)→ Vibe Coding
从"文档驱动"到"规格驱动"到"测试驱动"到"迭代驱动"到"对话驱动"。
问题 2:三种方法论对"歧义"的态度有什么根本不同?
查看答案
- TDD:用测试消除歧义——写一个测试,把"期望行为"固定下来
- SDD:用规格消除歧义——OpenAPI 里写的是整数就是整数,不会误解
- Vibe Coding:接受歧义——用自然语言描述,AI 用统计推断来填补理解空白
核心洞察:在 AI 时代,歧义的成本被放大了——模糊的指令可能导致 AI 生成大量微妙错误的代码。
问题 3:什么是 TDD 的"肮脏秘密"?SDD 如何弥补这个盲区?
查看答案
TDD 的"肮脏秘密":它回答"这段代码正确吗?"但不回答"这是正确要构建的东西吗?"。一个测试覆盖率完美的代码库,仍然可能在构建错误的产品。
SDD 弥补了这一点:SDD 先确认"做的东西对不对"(规格定义意图),TDD 再确认"代码对不对"(测试验证实现)。两者互补。
下一节预告
光谱给了我们宏观定位,但具体差在哪里?下一节从六个维度逐一拆解。