Skip to content

4.2 练习与巩固

通过练习来检验你对三种方法论的理解。


概念题

题目 1:方法论匹配

以下项目应该用哪种方法论(或组合)?请说明理由。

场景 A:一个大学生想用周末时间做一个个人博客网站。

场景 B:一家银行要开发新的在线支付系统。

场景 C:一个 5 人团队在做一个 SaaS 产品的持续迭代。

场景 D:一个 2 人的创业团队,要在 2 周内给投资人演示一个产品原型。

参考答案
  • A:Vibe Coding。个人项目,风险低,速度快优先。
  • B:SDD + TDD。金融系统,安全关键,必须有规格和测试双重保障。Vibe Coding 绝对不能用。
  • C:三者融合。新功能用 Vibe Coding 探索,确认后用 SDD 写规格,核心逻辑用 TDD。
  • D:Vibe Coding。2 周出原型,速度是唯一优先级。

题目 2:核心问题匹配

每种方法论回答的核心问题是什么?

方法论核心问题
TDD?
SDD?
Vibe Coding?
参考答案
  • TDD:代码是否正确?(Is this code correct?)
  • SDD:我们在构建正确的东西吗?(Are we building the right thing?)
  • Vibe Coding:能不能先跑起来?(Can it work?)

题目 3:判断题

判断以下说法的对错,并简要说明理由。

  1. TDD 的测试覆盖率 95% 就意味着产品方向正确。
  2. SDD 的规格文档写完就不能修改了。
  3. Vibe Coding 项目在 3 个月后可能会遇到维护困难。
  4. Karpathy 在 2026 年提出了"Agentic Engineering"来替代 Vibe Coding。
  5. AI 让方法论变得不再重要。
参考答案
  1. 。TDD 验证的是代码正确性,不是产品方向。95% 覆盖率的代码可能构建的是错误的产品。
  2. 。SDD 的规格是活的(Living Spec),随需求演进而更新:规格 v1.0 → 实现 v1.0 → 反馈 → 规格 v1.1。
  3. 。这就是"三月之墙"现象——第 1-3 月兴奋期后,集成挑战和代码理解问题开始浮现。
  4. 部分对。Agentic Engineering 是 vibe coding 的进化而非完全替代,强调更系统化的 AI 代理编排。
  5. 。AI 让方法论比以往更重要——歧义在 AI 生成的代码中成本被放大了。

场景题

题目 4:转换信号识别

以下是一个 Vibe Coding 项目的现状,请判断是否到了切换的时机:

项目已经开发 4 个月。最近两周:

  • 修复了登录 Bug,但支付功能出了新问题
  • 新来的同事看了三天代码说看不懂
  • 产品经理说要下个月上线

出现了哪些转换信号?应该切换到什么方法论?

参考答案

出现了 3 个转换信号

  1. 上下文漂移:修了一个 Bug 但引入了新问题——代码关联超出了 AI 的理解范围
  2. 团队扩张:新同事加入,需要更好的文档和协调方式
  3. 生产意图:下个月上线,需要更高的代码质量和稳定性

建议:立即从 Vibe Coding 切换到 SDD + TDD 混合模式:

  • 先花 1-2 天用 SDD 整理现有功能的 API 规格
  • 核心功能(支付、登录)补写 TDD 测试
  • 后续新功能按 SDD 流程开发

题目 5:工作流设计

为一个"在线教育平台"设计开发方法论组合。

需求清单:

  1. 用户注册/登录
  2. 课程列表和搜索
  3. 视频播放
  4. 支付购买
  5. 学习进度追踪
  6. 后台管理面板

请对每个功能模块选择最合适的方法论,并说明理由。

参考答案
功能方法论理由
用户注册/登录TDD安全敏感,认证逻辑必须有测试保障
课程列表和搜索SDD + Vibe Coding先用 Vibe Coding 验证搜索体验,确认后用 SDD 写 API 规格
视频播放Vibe Coding前端播放器有成熟方案,AI 可以快速集成
支付购买SDD + TDD(必须)支付是安全关键功能,必须有规格和双重测试
学习进度追踪SDD涉及数据模型和 API,需要精确的数据规格
后台管理面板Vibe Coding内部工具,风险低,速度优先

整体策略:以 SDD 为主线(定义 API 规格),支付和认证用 TDD(核心安全逻辑),UI 和内部工具用 Vibe Coding(快速出活)。


思考题(开放性)

题目 6:哲学思考

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

结合你学到的三种方法论,回答:

  1. 为什么 AI 会让歧义的成本放大?
  2. TDD 和 SDD 各自是怎么降低歧义成本的?
  3. 在你的日常开发中,"歧义"通常出现在哪里?
参考思路
  1. AI 放大歧义成本:人类开发者遇到歧义会停下来确认,但 AI 会根据自己的统计推断直接"猜"一个答案——而且猜的答案通常"听起来合理"。这意味着歧义不会在编码阶段暴露,而是在测试或生产阶段才被发现,修复成本远高于编码阶段。

  2. TDD 降低歧义:通过测试用例把"期望行为"精确地固定下来(assert result == 5 就是 5,没有第二种理解)。SDD 降低歧义:通过规格文档把"系统契约"精确地固定下来(OpenAPI 里写的是整数就是整数)。

  3. 歧义的常见来源:需求文档中的模糊表述("要快""要好用")、前后端之间的接口约定不清晰、产品经理和开发者对同一功能的不同理解。

题目 7:团队实践

如果你是团队技术负责人,你会怎么向团队推广"三者融合"的工作方式?考虑:

  1. 怎么说服"只用 Vibe Coding"的同事开始写测试?
  2. 怎么说服"只用 TDD"的同事尝试 Vibe Coding 做原型?
  3. 怎么在不增加太多流程的情况下引入 SDD?
参考思路
  1. 说服 Vibe Coding 同事写测试:不要说"你应该写测试"。而是——用 Vibe Coding 快速做原型,但告诉他们"当你发现修了一个 Bug 又引入新 Bug 时,就是该加测试的信号"。从痛点出发,不是从教条出发。可以先让 AI 帮他们生成测试,降低写测试的门槛。

  2. 说服 TDD 同事尝试 Vibe Coding:不是让他们放弃 TDD,而是——在写测试之前,先用 Vibe Coding 快速验证一下"这个方向对不对"。TDD 保证代码质量,Vibe Coding 保证方向正确。先花 2 小时验证,总比花 2 周写了完美的测试后发现方向错了强。

  3. 轻量引入 SDD:不要一上来就要求写完整的 OpenAPI 规格文档。可以先从一个 API 开始,只写最关键的几个端点的规格,让团队体会到"前后端不用扯皮"的好处。有了甜头,自然会扩展。


📌 课程总结

方法论核心要点
TDD测试驱动,Red-Green-Refactor,缺陷密度降低 40-90%(Nagappan et al. 2008)
SDD规格驱动,精确契约消除歧义,AI 时代的关键方法论
Vibe Coding氛围编程,快速探索,注意 80/20 法则(社区观察)
三者融合探索 → 规格 → 验证,根据项目阶段灵活选择
核心洞察三者不是对立的,而是互补的。AI 是引擎,方法论是方向盘

将方法论作为工具箱中的工具,根据场景选择最合适的那个。