小王刚进新公司,被拉进一个 Git 仓库的 PR(Pull Request)流程里,一头雾水:为啥改三行代码,要等两个人点绿勾才能合并?其实这背后就是「源代码库代码审查流程」——不是走形式,而是让代码更稳、更易读、更少埋雷。
代码审查不是挑刺,是团队协作的日常
你写的代码,别人要读、要改、要上线。审查不是质疑能力,而是提前发现隐患。比如有个同事提交了这样一段 Python 逻辑:
def calculate_discount(total):
if total > 100:
return total * 0.9
elif total > 200: # 这个条件永远不成立!
return total * 0.8
else:
return total表面看没问题,但第二个判断永远不会触发。审查时一眼就能揪出来,省得上线后用户满减算错,客服电话被打爆。
典型流程长啥样?以 GitHub/GitLab 为例
1. 开发者在 feature 分支写完功能,推送代码;
2. 提交 Pull Request 或 Merge Request,填写清晰描述(比如「修复登录页手机号校验正则漏掉 +86」);
3. 系统自动触发 CI 检查(单元测试、格式检查、安全扫描);
4. 指定 reviewer 收到通知,打开页面逐行看变更(diff),加评论、提建议;
5. 开发者修改后重新推送,评论自动标记为已解决;
6. 至少两人 approve(或按团队规则满足最小审批数),才能合并进主干。
审查时盯哪几处,效率最高?
• 边界和异常:空值、超长输入、网络失败有没有兜底?
• 可读性:变量名是 data 还是 userProfileJsonString?函数是不是塞了 80 行逻辑?
• 重复代码:这个校验逻辑上个月在支付模块写过一遍,这次又抄?
• 权限与日志:敏感操作有没有记录?错误信息会不会把数据库密码打到日志里?
有次我们审一个导出 Excel 的接口,发现它把整个用户表 SELECT 出来再内存过滤,reviewer 直接留言:“查 10 万条再筛 3 条?加 WHERE 条件吧。”当天就改了,服务器负载立马降了一半。
别让流程卡死,也别跳过它
紧急 hotfix 可以简化流程(比如一人 approve + 自动 CI 通过即可),但不能跳过审查本身。曾有项目图快跳过审查,结果上线后某个 if 判断少了个等号,导致优惠券全量发放,财务差点报警。后来团队立下铁规:哪怕改一行 CSS,也要走完整流程。
说白了,代码审查不是给谁设门槛,而是让每个人写的代码,都经得起另一个人下班前顺手翻一眼的底气。