要有审查清单
代码审查这件事其实是可以标准化和流程化的,其效果在一定程度上也是可以量化的。要想做好代码审查,尤其是对一个开发团队来说,有一份审查清单是非常有必要的,这样大家就都有了一个标准,可以在代码审查过程中按照审查清单逐一检查。使用审查清单可以帮助审查者快速找到问题,甚至开发者在开发阶段就可以按照审查清单进行代码自查。
一般来说,一份代码审查清单应该包括如下几个大的类目。
代码结构:是否包含超长代码,代码层次嵌套是否过深,函数是否入参过多,循环条件是否有跳出点,if语句是否有对应的else语句,是否存在重复的代码,等等。
代码安全性:I/O流是否正常关闭,资金计算是否使用了Double数据类型,是否有超大的临时对象,线程池大小是否合理,异常是否被忽略,是否有详细的日志记录,是否存在并发问题,参数是否做了必要的检查,远程服务的入参出参是否实现了Serialization并且自定义了serialVersionUID,应用是否依赖了SNAPSHOT版本的类库,等等。
代码性能:是否有长SQL语句、SQL语句是否用到索引,是否有成熟的类库可以替换自己实现的代码,是否可以考虑单例模式,是否可以考虑线程池,是否可以考虑NIO,是否可以进行锁优化,等等。
代码注释:指类及方法是否有注释,注释是否可以表达其准确含义,在代码中是否存在FIXME及TODO等注释,注释是否包含边界值及对异常情况的说明,等等。
单元测试:代码是否有可测试性,新代码是否有单元测试,单元测试是否可以覆盖所有场景,等等。
代码优化:是否可以使用枚举代替自定义的常量,在代码中是否包含魔法值,是否可以使用Optional代替NPE的检查,是否可以使用Stream代替for循环,是否可以使用设计模式,等等。
其他:代码逻辑是否正确,是否实现了业务功能,代码是否有好的可读性及可测试性,等等。
审查时机
代码审查应该是日常性的工作,而不是代码上线前的集中性工作。换句话说,代码审查应该是伴随着代码提交的,而不是伴随着代码发布的。最好的实践是在每次提交改动较大的代码后都找到对应的开发人员进行代码审查,这样可以更早地发现问题,也可以使其他人更早地了解这部分新代码。
审查代码量不宜过多
2006年5月,Smart Bear针对Cisco进行了为期10个月的代码审查方面的研究,最终得到一份思科代码审查报告(Code Review at Cisco Systems,参见http://support. smartbear.com/support/media/resources/cc/book/code-review-cisco-case-study.pdf)。在该报告中指出,做代码审查,每次审查的代码行数最好在200行以内,不超过400行,否则查找代码缺陷的效果就会大打折扣。
出自《程序员的三门课》
网友评论