- 统一的代码格式
- 使用统一的配置文件,提交前进行格式化(不属于review内容)
- 编程风格,可读性和可维护性
- 代码健壮性,防御性编程
- 参数检查(入口、DAO)
- 参数异常情况时的返回值
- NPE问题
- unboxing、方法避免返回null、使用空值容忍的工具类
- 异常处理
- 异步处理(nsq、线程池)时的异常处理、异常分类、RPC服务异常处理、事务边界
- 控制对外部资源的访问
- 超时设置、返回值检查、隔离策略
- 并发处理
- 接口是否要支持幂等
- 分布式锁使用
- 加锁及释放锁场景是否完备,锁超时设置是否合理,是否会死锁,锁基础设施不可用时的策略
- 参数检查(入口、DAO)
- 性能问题
- 循环或高并发访问数据库/外部服务
- SQL效率
- 索引,count最大数量限制,排序
- 缓存使用(本地,远程)
- 考虑缓存一致性,内存占用,是否有击穿问题
- 高成本对象的创建
- 是否可复用,是否线程安全
- 接口容量预估(耗时、调用量),限流降级策略
- 业务逻辑
- 实现是否和设计时一致
- 是否夹带私货(不在本次业务范围内的修改)
- 是否灰度上线,灰度开关是否可逆,回退影响面
- 运维问题
- 异常日志是否完备,是否能通过日志定位问题
- 重要操作是否有日志(记录操作人,操作时间,防抵赖)
- 业务监控告警配置
- 环境问题
- 线上预发是否需要隔离(nsq、定时任务、缓存)