代码审核清单

代码审核清单

设计

  1. 代码设计是否符合项目整体框架
  2. 是否符合SOLID原则(单一功能、开闭原则、里氏替换、接口隔离以及依赖反转)
  3. 设计模式是否使用得当
  4. 代码是否放置在合适的包中
  5. 是否提取了可重用代码
  6. 是否过度设计,导致额外的复杂性

可读性/可维护性

  1. 字段,变量,方法,参数明明是否含义明确
  2. 评审人是否能轻松读懂
  3. 是否能够读懂测试用例
  4. 测试用例是否覆盖了关键分支
  5. 异常消息是否包含必要信息且易懂
  6. 代码注释是否明确,不该有过期的注释

功能&性能

  1. 代码是否执行的期望的功能
  2. 是否隐含bug或者明显错误
  3. 是否实现了需求
  4. 代码作者是否需要创建公开文档或者修改已存在的帮助文档
  5. 是否有性能和安全问题
  6. 是否满足强制的性能需求
  7. 修改的代码是否会影响已存在的性能测试结果

资源使用

  1. 调用数据库的方式是否正确
  2. 是否有无用的网络调用
  3. 是否有内存泄露问题
  4. 内存是否可能无限增长
  5. 网络连接或者流是否正常关闭
  6. 资源池(线程池,数据库连接池,httpclient)是否正确设置

补充关注点

  1. 使用反射的原因,是否在合理情况下
  2. 各种timeout设置是否正确
  3. 使用并发的逻辑
  4. 是否在多线程环境中使用了正确的数据结构(避免线程安全问题)
  5. 是否存在资源竞争
  6. 是否合理使用锁
  7. 是否应该对这部分代码做性能测试
  8. 缓存是否正确使用

代码级别优化

  1. synchronization/locks是否在必要的地方使用
  2. 是否可以使用原子对象(例如:AtomicInteger)替代显式加锁
  3. 多线程环境中使用的数据结构是否是线程安全的
  4. 代码是否可以从惰性加载中获益
  5. 字符串格式化是否太多,是否可以优化
  6. 日志消息是否合理使用字符串格式化,是否有不必要的字串拼接
  7. 代码是否足够短小,是否有拆分可能

依赖

  1. 代码作者是否理解声明的依赖
  2. 尽可能少声明依赖
  3. 使用高质量的第三方库
  4. 跟踪使用依赖代码的场景

安全

  1. 服务&路径是否需要鉴权
  2. 数据是否需要加密传输
  3. 密码是否正确管理

你可能感兴趣的:(代码审核清单)