同行代码审查作为一个过程已经越来越多地被世界各地的工程团队所采用。这是有原因的--从长远来看,代码审查已经被证明可以提高软件质量并节省开发者的时间。关于代码评审如何帮助工程团队,领先的软件工程从业人员已经写了很多。
我最喜欢的是Karl Wiegers的这段话,他是关于这个主题的开创性论文《人性化的同行评审》的作者。
同行评审--一种由软件交付物的作者以外的人审查其缺陷和改进机会的活动--是目前最强大的软件质量工具之一。同行评审的方法包括检查、穿行、同行桌面检查和其他类似的活动。在经历了近15年的同行评审的好处后,我绝不会在一个不进行同行评审的团队中工作。
值得花时间和精力去制定一个代码审查策略,并在团队中持续遵循。从本质上讲,这有两个方面的好处:更多的眼睛看代码,减少了错误和坏的设计模式进入你的代码库的机会;拥抱这个过程,在团队中促进知识共享和积极的合作文化。
这里有6个提示,以确保在你的团队中有效的同行评审。
1.保持小的和集中的变化
代码审查需要开发人员查看别人的代码,而这些代码大多数时候都是全新的。一次性审查太多的代码行,需要大量的认知努力,而且审查的质量会随着修改规模的增加而降低。虽然没有LOC的黄金数量,但建议创建容易管理的小型拉取请求。如果一个版本有大量的变化,最好把它分成若干个小的拉动请求。
2.确保变化的逻辑连贯性
当变化是集中的并且有逻辑连贯性时,代码审查是最有效的。在进行重构时,要避免进行行为上的改变。同样地,行为上的改变也不应该包括重构和风格上的违规修正。遵循这一惯例可以防止无意的变化在代码库中悄悄出现而不被注意。
3.拥有自动化测试,并跟踪覆盖率
你喜欢的自动化测试--单元、集成测试、端到端测试等,有助于自动确保正确性。始终如一地确保所提出的修改被某种自动测试所覆盖,从而腾出时间进行更多的定性审查;允许对更深层次的问题进行更有洞察力的深入讨论。
4.在提交给同行审查之前,对修改进行自我审查
一个变化可以实现一个新的功能或修复一个现有的问题。建议请求者只提交那些完整的、经过手动测试的正确性的修改。在创建pull-request之前,快速浏览一下所提出的修改有助于确保在修改集中没有添加不相干的文件。这为审查员节省了大量的时间。
5.自动处理可以自动处理的东西
人工审查的时间是昂贵的,开发人员的时间最好的利用是审查代码的质量方面--逻辑、设计模式、软件架构等等。提示工具可以帮助自动处理风格和格式的约定。持续的质量和静态分析工具可以帮助捕捉潜在的错误、反模式和安全问题,这些问题可以在开发者提出修改请求之前由他们来修复。这些工具中的大多数也能与代码托管平台很好地整合。
6.积极、有礼貌和尊重
最后,要认识到一个事实,即审查双方的人都是人。提供积极的反馈,并谦虚地接受批评。与其在文字的字面意义上打压自己,不如把评论看成是人们在努力实现对团队最好的东西,尽管方式可能不同。认识到这一点,就可以省去很多怨恨和无情的负面情绪。