~/VibeHandbook
免费 PDF

08 · 05

在 diff 上迭代,而不是重写

一旦代码存在了,就要抵住把整个东西重新要一遍的冲动。像"把它弄好一点"这种模糊的追问会扔掉能用的代码,并重新引入你早已修过的 bug。指向你想要的那个具体改动。

这不对,把整个东西重写一遍。
函数能用,但有两个问题:
1. 那行 `throw new Error` 的错误应当返回一个
   Result 类型,而不是抛出——和上面 validateUser
   函数里的模式保持一致。
2. 循环每次迭代都重新读 `items.length`;把它提到循环外。

只给我看这两处改动的 diff。

健康的循环是一个紧凑的回路:向模型提示,读取输出,然后用一个小而有针对性的 diff 来打磨——绝不整体重写——直到它对为止:

   ┌─────────┐     ┌─────────┐     ┌─────────┐
   │ 提示    │ ──▶ │ 模型    │ ──▶ │ 输出    │
   └─────────┘     └─────────┘     └────┬────┘
        ▲                               │
        │                               ▼
        │                          ┌─────────┐
        │         好吗?            │ 审查    │
        │   是 ◀───────────────────┤ diff    │
        │                          └────┬────┘
        │                               │ 否
        │      优化 (小 diff)           │
        └───────────────────────────────┘
                                    偏移? ▶ 重置到上一个好版本

要一份 diff(而不是一次完整的重写)能让改动保持可审查,并保住那些已经能用的部分。把 AI 的输出当作一位同事的 :对具体的行做评论,要求有针对性的编辑。当一个改动跑偏,代码随着每次回复离你想要的越来越远时,别再一味打补丁——回退到你信得过的上一个版本,再用一段更锋利的描述从那里重新提示。在一个坏掉的基础上一路向前迭代,只会把烂摊子越叠越大。

想离线阅读?

免费下载整本书的 PDF 或 EPUB。