代码审查实战指南

1.1k 词

代码审查实战指南

一、代码风格标准化

1.1 命名规范

  • 采用匈牙利命名法(如 strUserName)或现代语义命名(如 userNameTextField
  • 禁止使用 tmp/data等无意义命名
  • 类名采用大驼峰,方法名使用小驼峰
1
2
3
4
5
6
// 好的示例
@interface UserService : NSObject

- (void)updateUserProfile:(NSString *)userId;

@end

1.2 格式一致性

  • 统一缩进策略(4空格制或2空格制)
  • 方法参数对齐标准:
1
2
3
4
- (void)complexCalculationWithParam1:(NSInteger)param1
param2:(CGFloat)param2
param3:(NSDictionary<NSString *, id> *)param3
completion:(void(^)(ResultType *result))completion;

二、冗余代码治理

2.1 代码重复检测

使用OCLint工具检测重复代码块:

1
2
3
4
5
6
disable-rules:
- LongLine
- LongMethod
enable-rules:
- DuplicatedCode:
threshold: 50

2.2 无效代码处理流程

三、业务逻辑验证

3.1 核心检查点矩阵

检查维度 正向案例验证 异常场景覆盖 性能边界测试
支付流程 >100TPS
库存扣减 超卖防护 分布式锁

3.2 防御性编程模式

1
2
3
4
5
6
7
// 使用NSParameterAssert进行参数检查
NSParameterAssert(orderId.length > 0);
if (orderId.length == 0) {
NSString *errorMsg = @"订单ID不能为空";
NSLog(@"%@", errorMsg);
return;
}

四、规范执行机制

4.1 自动化检查清单

  1. SonarQube质量门禁(覆盖率>80%)
  2. OCLint格式校验
  3. OWASP依赖扫描
  4. 编译器警告零容忍

4.2 审查记录模板

1
2
3
4
5
6
7
**审查项**:用户服务模块  
**问题类型**
- [ ] 代码风格
- [x] 业务逻辑
**改进建议**
建议使用NSDate替代CFAbsoluteTime
**严重程度**:⭐️⭐️

五、典型问题解答

Q1:如何处理紧急需求与代码规范的冲突?

建立 紧急通道白名单机制,需满足:

  1. 提交风险评估报告
  2. 添加TODO注释标记
  3. 72小时内补全审查

Q2:跨团队代码审查如何协作?

推荐使用Gerrit的评审工作流:

  1. 创建跨域评审组
  2. 设置权重评分机制
  3. 实施追踪看板

延伸阅读