---
name: code-review-checklist
description: 审查代码改动（review diff / PR）时使用——按固定清单过正确性、边界、错误处理和测试盲区，避免只看顺眼不顺眼。
---

# 代码审查清单

审查的第一原则：**先读需求再读 diff**。不知道这次改动想达成什么，就只能审出格式问题。

## 正确性（最高优先级）

- 改动是否真的解决了它声称要解决的问题？构造一个具体输入在脑中跑一遍。
- 有没有"顺手"改了不相关的行为？每一行改动都应该能追溯到本次目标。
- 并发/重入：这段代码被同时调用两次会怎样？

## 边界

- 空集合、空字符串、null/undefined、0、负数、超长输入——逐个问"这里会怎样"。
- 循环的第一次和最后一次迭代是否和中间行为一致？
- 时区、编码（UTF-8 BOM、CRLF）、路径分隔符这类"在我机器上没问题"的经典来源。

## 错误处理

- 失败路径是吞掉、抛出还是返回错误值？和周围代码的约定一致吗？
- 报错文案是否包含足够上下文（哪个文件、哪个参数、期望什么）让人照做就能修？
- 资源（文件句柄、子进程、定时器）在错误路径上是否也被释放？

## 测试盲区

- 新增分支有没有对应测试？没有的话，是"难测"还是"忘了"？
- 测试断言的是行为还是实现细节？断实现细节的测试会在无害重构时误报。

## 输出格式

按严重度分组给结论：**必须改**（正确性/安全）→ **建议改**（可维护性）→ **可选**（风格）。
每条指出具体行号和理由，不说"感觉不太好"这种无法执行的话。
