共计 1716 个字符,预计需要花费 5 分钟才能阅读完成。
痛点分析:新手常踩的 CR 坑
刚开始做 Code Review 时,很多新手容易陷入这些误区:

- 形式主义审查 :只检查缩进、变量命名等表面问题,忽略核心逻辑缺陷
- 过度关注风格 :纠结于大括号换行这类可自动化规范的问题,浪费时间
- 遗漏架构问题 :对设计模式误用、接口污染等严重问题视而不见
- 不敢提意见 :面对资深开发者的代码时过度谨慎,错失改进机会
- 反馈模糊 :给出 ’ 这个实现不好 ’ 之类的无效评论,缺乏具体改进建议
核心方法论:SMART 原则落地 CR
1. Specific(具体定位)
避免笼统评价。比如发现一个性能问题,应该说:
- ❌ ‘ 这个查询有点慢 ’
- ✅ ‘ 该 SQL 在 user 表未使用索引,全表扫描影响性能 ’
2. Measurable(可量化)
用数据说话:
- ❌ ‘ 这个函数太长 ’
- ✅ ‘ 该函数含 58 行代码(建议控制在 20 行内)’
3. Actionable(可执行)
每个问题都应附带解决方案:
// Bad
void processOrder() {
// 业务逻辑与支付耦合
pay();}
// Good 建议
@Transactional
void processOrder() {validate();
// 建议将支付拆分为独立服务
paymentService.execute();}
4. Relevant(关联业务)
将代码问题映射到业务影响:
- ❌ ‘ 这个 DTO 字段命名不规范 ’
- ✅ ‘address 拼写错误会导致前端表单提交失败 ’
5. Time-bound(限时)
设置合理时间盒(如单个 PR 不超过 30 分钟审查)
实战演示:Python 代码审查案例
问题代码检测
# Bad: 存在安全风险的密码处理
def store_password(password):
with open('pass.txt', 'w') as f:
f.write(password) # 明文存储违反安全规范
# Good 改进建议
import hashlib
def store_password(password: str) -> None:
"""
安全存储密码(使用 SHA256 加盐哈希):param salt: 建议从环境变量读取
"""salt = os.getenv('SALT')
hashed = hashlib.sha256((password + salt).encode()).hexdigest()
db.store(hashed) # 使用专业存储方案
自动化检测脚本
# SonarQube API 示例:检测圈复杂度
import requests
def check_cyclomatic_complexity(file_path):
"""
通过 SonarQube API 检测代码复杂度
阈值建议:单个方法不超过 10
"""url ='https://sonarqube.yourcomany.com/api/issues/search'params = {'componentKeys': f'project:{file_path}','rules':'python:S3776', # 圈复杂度规则'severities':'MAJOR'
}
response = requests.get(url, params=params)
return response.json()['issues']
避坑指南:CR 沟通艺术
1. 避免负面表达
- ❌ ‘ 谁写的这种垃圾代码?’
- ✅ ‘ 这个排序算法时间复杂度是 O(n²),数据集超过 1 万时可能变慢,建议改用快速排序 ’
2. 警惕无效确认
禁止无脑 LGTM!至少要:
- 实际运行过代码
- 验证过边界条件
- 确认测试覆盖率≥80%
进阶技巧:通过 CR 学习架构
识别模式 / 反模式
- ✅ 发现策略模式的正确应用
- ❌ 识别出上帝对象(3000+ 行的 Service)
技术债追踪
建议建立技术债看板,记录以下信息:
| 问题类型 | 位置 | 影响 | 修复优先级 |
|---|---|---|---|
| 循环依赖 | OrderService.java | 导致启动慢 | P1 |
下一步行动清单
- 制定 Checklist 模板 :包含安全性、性能、可维护性等维度
- 配置自动化工具 :
- pre-commit 钩子做基础校验
- CI 流水线集成 SonarQube
- 定期复盘指标 :
- 平均 CR 耗时
- 缺陷发现率
- 问题修复周期
通过持续实践这些方法,我在三个月内将团队 CR 效率提升了 40%,生产环境缺陷数下降 65%。记住:好的 Code Review 不是挑错,而是共同打造卓越代码的过程。
正文完
发表至: 软件开发
近一天内
