在 diff 上迭代,而不是重写
一旦代码存在了,就要抵住把整个东西重新要一遍的冲动。像"把它弄好一点"这种模糊的追问会扔掉能用的代码,并重新引入你早已修过的 bug。指向你想要的那个具体改动。
这不对,把整个东西重写一遍。
函数能用,但有两个问题:
1. 那行 `throw new Error` 的错误应当返回一个
Result 类型,而不是抛出——和上面 validateUser
函数里的模式保持一致。
2. 循环每次迭代都重新读 `items.length`;把它提到循环外。
只给我看这两处改动的 diff。
健康的循环是一个紧凑的回路:向模型提示,读取输出,然后用一个小而有针对性的 diff 来打磨——绝不整体重写——直到它对为止:
┌─────────┐ ┌─────────┐ ┌─────────┐
│ 提示 │ ──▶ │ 模型 │ ──▶ │ 输出 │
└─────────┘ └─────────┘ └────┬────┘
▲ │
│ ▼
│ ┌─────────┐
│ 好吗? │ 审查 │
│ 是 ◀───────────────────┤ diff │
│ └────┬────┘
│ │ 否
│ 优化 (小 diff) │
└───────────────────────────────┘
偏移? ▶ 重置到上一个好版本
要一份 diff(而不是一次完整的重写)能让改动保持可审查,并保住那些已经能用的部分。把 AI 的输出当作一位同事的 :对具体的行做评论,要求有针对性的编辑。当一个改动跑偏,代码随着每次回复离你想要的越来越远时,别再一味打补丁——回退到你信得过的上一个版本,再用一段更锋利的描述从那里重新提示。在一个坏掉的基础上一路向前迭代,只会把烂摊子越叠越大。