Skip to content

3.1 从严格规格到纯氛围的光谱

认识了三种方法论后,现在是时候看它们怎么排位了。


方法论光谱

把所有软件开发方法论放在一条线上,从最严格到最灵活:

严格 ←
瀑布模型
文档驱动
SDD/BDD
规格驱动
TDD
测试驱动
敏捷
迭代驱动
Vibe Coding
对话驱动
→ 灵活

光谱定位详解

光谱位置:较严格
SDD
文档量:结构化规格
前置成本:高
灵活性:中等
适合场景:企业级系统、API 开发、跨团队协作
光谱位置:中等
TDD
文档量:测试即文档
前置成本:中等
灵活性:中高
适合场景:复杂业务逻辑、长期维护项目
光谱位置:最灵活
Vibe Coding
文档量:无或极简
前置成本:极低
灵活性:极高
适合场景:原型、MVP、个人项目

对"歧义"的三种态度

这条光谱背后,隐藏着一个更深层的问题——歧义

每种方法论本质上都在处理"需求不明确"这个问题,只是态度截然不同:

TDD
消除歧义(用测试)
写一个测试,把"期望行为"固定下来。测试就是约束——通过测试的定义是唯一的,没有歧义。
SDD
消除歧义(用规格)
写一个规格,把"系统契约"固定下来。OpenAPI 里写的是整数就是整数,不会误解。
Vibe Coding
接受歧义(让 AI 猜)
用自然语言描述,留下大量理解空间。AI 用统计推断填补歧义,大部分时候猜对,但有时猜错。

"在人类编写的代码库中,歧义的成本是几小时。在 AI 生成的代码库中,歧义的成本是数千行听起来合理但微妙错误的输出。" — Vishal Mysore


一个关键辩证

这里有一个很多人忽略的辩证:

TDD 的"肮脏秘密"
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 再确认"代码对不对"(测试验证实现)。两者互补。


下一节预告

光谱给了我们宏观定位,但具体差在哪里?下一节从六个维度逐一拆解。

下一节:六个维度深度对比