首页/开发/代码质量与评审速查/评审检查项:正确性
代码评审64 条

评审检查项:正确性

正确性检查聚焦行为:意图是否达成、边界与异常路径、空值与溢出、幂等与顺序假设,以及对外部依赖行为的理解是否正确。

正确性检查看什么

正确性是评审的第一优先级:改动是否真的解决了它声称的问题、边界与异常路径是否处理、对外部依赖的行为假设是否成立。评审者不必替作者重写代码,但要追问结论的依据——测试、日志、文档都算依据,一句「本地验证过」不算。

基本信息

关注点意图达成、边界与异常路径、外部依赖的行为假设
依据要求结论需能引用测试、日志或文档,口头承诺不算
三处互证改动描述、复现步骤、测试用例相互印证
可简化场景纯格式化或无行为变化的机械结构调整,只需确认范围

逐项看什么

  • 改动是否真的解决了描述里声称的问题(对照测试或复现步骤)。
  • 空值、空集合、零、负数的处理路径是否明确。
  • 边界:超大输入、超时、重试、部分失败后的状态是否可预期。
  • 并发与顺序假设:同一份数据被多处读写时,可见性靠什么保证。
  • 外部依赖的行为假设:版本差异、默认值、错误语义是否成立。
  • 幂等性:重试或重复投递会不会重复产生副作用。

常见正确性缺陷

缺陷典型表现怎么确认
边界未处理空输入报错或返回错误值追问空值、零与超大输入的路径
错误被吞异常被捕获后继续执行看 catch 分支与返回值是否被忽略
依赖假设过期依赖升级后默认值变化核对依赖版本与对应文档
顺序假设依赖调用顺序但无保证机制追问并发、重试与乱序场景

三处互证的检查法

三处互证的检查法
# 1. 描述声称解决了什么问题
# 2. 复现步骤或测试能否证明这一点
# 3. 测试断言是否覆盖同一个结论
# 三者对齐 → 结论可信
# 只凭一句「本地验证过」→ 要求补上可核对的依据

追问依据怎么问

  • 「这条路径有测试覆盖吗」比「这样对吗」更容易得到可核对的回答。
  • 要求贴出命令与输出:可复现的证据比口头描述更省沟通成本。
  • 拿不准时问边界:「输入为空时会走到哪个分支」,比泛泛提问更有效。
  • 对历史遗留的奇怪写法:先问是不是有兼容性约束,再判断是否需要改。
评审者不必写出正确实现,但必须把「依据是什么」问清楚,否则批准只是印象判断。
改动描述、测试与代码三者互相印证时,正确性结论最可靠;三者不一致时,先解决不一致再谈其他。

易错点

  • 只看快乐路径:异常与边界分支无人验证,问题上线后才暴露。
  • 把测试全绿当作正确性证明:测试可能复用了与实现相同的误解。
  • 相信口头结论:没有可核对的依据,评审退化为印象判断。
  • 在评审里替作者重写实现:既消耗时间,又让作者失去对改动的掌握。

数据来源与参考

  • Google Engineering Practices · What to look for in a code review(Functionality)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌