El Psy Congroo

Code Review 约定

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