审查目标
C 代码审查不是挑风格问题,而是提前发现运行时成本最高的问题:内存错误、资源泄漏、接口歧义、错误路径遗漏和不可测试的全局状态。
接口语义
先看函数接口是否清楚:
- 参数能否为
NULL - 返回值如何表达错误
- 调用方是否负责释放资源
- 输出参数失败时是否有效
- 函数是否修改传入缓冲区
接口语义不清楚时,后续实现再漂亮也容易出问题。
内存和边界
重点检查长度、容量和生命周期:
- 字符串空间是否包含
\0 memcpy、snprintf、数组下标是否有边界- 释放路径是否覆盖所有失败分支
- 指针释放后是否还会被访问
错误路径
C 项目里很多 bug 只在异常路径出现。审查时要刻意走失败分支:申请失败、文件打开失败、设备不存在、协议字段不合法、部分初始化后返回错误。
小结
好的代码审查清单能把经验固化下来。每次发现新问题,都应该把它变成下一次能提前检查的条目。