代码审核清单
编程语言
2018-08-08 05:16:23
阅读次数: 0
代码审核清单
设计
- 代码设计是否符合项目整体框架
- 是否符合SOLID原则(单一功能、开闭原则、里氏替换、接口隔离以及依赖反转)
- 设计模式是否使用得当
- 代码是否放置在合适的包中
- 是否提取了可重用代码
- 是否过度设计,导致额外的复杂性
可读性/可维护性
- 字段,变量,方法,参数明明是否含义明确
- 评审人是否能轻松读懂
- 是否能够读懂测试用例
- 测试用例是否覆盖了关键分支
- 异常消息是否包含必要信息且易懂
- 代码注释是否明确,不该有过期的注释
功能&性能
- 代码是否执行的期望的功能
- 是否隐含bug或者明显错误
- 是否实现了需求
- 代码作者是否需要创建公开文档或者修改已存在的帮助文档
- 是否有性能和安全问题
- 是否满足强制的性能需求
- 修改的代码是否会影响已存在的性能测试结果
资源使用
- 调用数据库的方式是否正确
- 是否有无用的网络调用
- 是否有内存泄露问题
- 内存是否可能无限增长
- 网络连接或者流是否正常关闭
- 资源池(线程池,数据库连接池,httpclient)是否正确设置
补充关注点
- 使用反射的原因,是否在合理情况下
- 各种timeout设置是否正确
- 使用并发的逻辑
- 是否在多线程环境中使用了正确的数据结构(避免线程安全问题)
- 是否存在资源竞争
- 是否合理使用锁
- 是否应该对这部分代码做性能测试
- 缓存是否正确使用
代码级别优化
- synchronization/locks是否在必要的地方使用
- 是否可以使用原子对象(例如:AtomicInteger)替代显式加锁
- 多线程环境中使用的数据结构是否是线程安全的
- 代码是否可以从惰性加载中获益
- 字符串格式化是否太多,是否可以优化
- 日志消息是否合理使用字符串格式化,是否有不必要的字串拼接
- 代码是否足够短小,是否有拆分可能
依赖
- 代码作者是否理解声明的依赖
- 尽可能少声明依赖
- 使用高质量的第三方库
- 跟踪使用依赖代码的场景
安全
- 服务&路径是否需要鉴权
- 数据是否需要加密传输
- 密码是否正确管理
转载自blog.csdn.net/u012631045/article/details/81480166