小王刚入职一家创业公司,第一天就被拉进 GitLab 项目组,组长甩来一句:"PR 提前发出来,等 review 通过再合主干。"他愣了下——review 是啥?点开链接一看,页面上写着 "Changes requested",旁边还挂着两个红叉和一行批注:"这里没做空指针判断,上线会崩。"
代码审查不是挑刺,是团队共守底线
很多人以为代码审查(Code Review)就是“找 bug”,其实它更像是一次轻量级的协作式预演:别人看你写的逻辑顺不顺、边界有没有漏、命名是不是让人一眼看懂。尤其在多人共用的源代码库(比如 GitHub、GitLab、Gitee)里,一次没审就合入的代码,可能让下游模块连续加班修三天。
一个实用的审查流程,三步走稳
第一步:提 PR 前自己先过一遍
别急着点“Create pull request”。花两分钟检查:是否删了不该删的调试日志?config 文件有没有误提交测试密钥?新增接口是否加了基础校验?哪怕只是改了行注释,也确保它真能帮后来人看懂。
第二步:明确审查重点,不瞎扫
审查人不用逐行读完所有改动。优先盯这几块:
• 核心逻辑分支是否覆盖了异常路径(比如网络超时、数据库返回 null);
• 权限控制有没有绕过(如管理接口被普通用户调用);
• SQL 或正则是否可能引发注入;
• 日志里有没有打印敏感字段(手机号、token)。
第三步:反馈要具体,拒绝“看着不太对”
写评论别只说“建议优化”,换成:“user.go#L42 这里用 == 比较字符串,建议改用 strings.EqualFold() 避免大小写导致权限绕过。”
举个真实场景
某次更新登录态校验,开发者写了:
if token == "" || !isValid(token) {
return errors.New("invalid token")
}审查人发现 isValid() 内部用了 http.Get 同步请求,没设 timeout。于是补了一条评论:“isValid 在高并发下可能阻塞整个 goroutine,建议加 context.WithTimeout,并把错误透传出来。”——第二天,运维就没收到凌晨三点的告警电话。
工具不是万能的,但能省下一半力气
GitHub 自带的 diff 查看、行内评论功能够用;想再进一步,可以配 SonarQube 扫重复代码,或用 pre-commit hook 拦住 console.log 和 print()。但记住:机器能标出未使用的变量,标不出“这个函数名为什么叫 handleDataV2FinalNew()?”——这种事,还得靠人问一句。
源代码库不是仓库,是活的文档。每次审查,都在悄悄加固团队的技术共识。