Kluever 手法:修 bug 请拆成两次提交
来源:jordi.inversethought.com — 2026-10-31
📋 概述
Jordi 介绍一种把 bugfix 拆成两个 commit 的写法:第一次提交只写一个“把 bug 行为钉住”的测试并让它通过,第二次提交既修 bug 又把测试断言改成正确的期望值。这样第一条提交证明了 bug 真实存在,第二条提交证明了修复真的改变了行为,而且每个 commit 上 CI 都是绿的,可以安全地做二分定位。
🔑 核心要点
- 两步走的顺序不可颠倒:先提交一个断言“错误行为”的测试,它必须通过。
- 第二个 commit 同时改实现和测试,测试从红变绿的证据被显式记录下来。
- 传统“实现+测试塞一个 commit”的隐患:万一测试在修复前就能过,你会得到虚假的信心。
- 作者用年龄校验举例:把 18 <= 改成 18 < 看似修好了跨年前后的边界,实际上根因在 age_in_years,测试在两个版本下都通过。
- 每个 commit 都保持 CI 通过,历史可以安全二分,回滚也不会留下坏测试。
💡 金句
In brief, it’s this: whenever you are doing a bugfix, do it in two commits.
👍 0
👎 0
← 返回 Lobsters 首页