正确性检查看什么
正确性是评审的第一优先级:改动是否真的解决了它声称的问题、边界与异常路径是否处理、对外部依赖的行为假设是否成立。评审者不必替作者重写代码,但要追问结论的依据——测试、日志、文档都算依据,一句「本地验证过」不算。
基本信息
| 关注点 | 意图达成、边界与异常路径、外部依赖的行为假设 |
|---|---|
| 依据要求 | 结论需能引用测试、日志或文档,口头承诺不算 |
| 三处互证 | 改动描述、复现步骤、测试用例相互印证 |
| 可简化场景 | 纯格式化或无行为变化的机械结构调整,只需确认范围 |
逐项看什么
- 改动是否真的解决了描述里声称的问题(对照测试或复现步骤)。
- 空值、空集合、零、负数的处理路径是否明确。
- 边界:超大输入、超时、重试、部分失败后的状态是否可预期。
- 并发与顺序假设:同一份数据被多处读写时,可见性靠什么保证。
- 外部依赖的行为假设:版本差异、默认值、错误语义是否成立。
- 幂等性:重试或重复投递会不会重复产生副作用。
常见正确性缺陷
| 缺陷 | 典型表现 | 怎么确认 |
|---|---|---|
| 边界未处理 | 空输入报错或返回错误值 | 追问空值、零与超大输入的路径 |
| 错误被吞 | 异常被捕获后继续执行 | 看 catch 分支与返回值是否被忽略 |
| 依赖假设过期 | 依赖升级后默认值变化 | 核对依赖版本与对应文档 |
| 顺序假设 | 依赖调用顺序但无保证机制 | 追问并发、重试与乱序场景 |
三处互证的检查法
三处互证的检查法
# 1. 描述声称解决了什么问题
# 2. 复现步骤或测试能否证明这一点
# 3. 测试断言是否覆盖同一个结论
# 三者对齐 → 结论可信
# 只凭一句「本地验证过」→ 要求补上可核对的依据追问依据怎么问
- 「这条路径有测试覆盖吗」比「这样对吗」更容易得到可核对的回答。
- 要求贴出命令与输出:可复现的证据比口头描述更省沟通成本。
- 拿不准时问边界:「输入为空时会走到哪个分支」,比泛泛提问更有效。
- 对历史遗留的奇怪写法:先问是不是有兼容性约束,再判断是否需要改。
评审者不必写出正确实现,但必须把「依据是什么」问清楚,否则批准只是印象判断。
改动描述、测试与代码三者互相印证时,正确性结论最可靠;三者不一致时,先解决不一致再谈其他。