不少开发团队和创业公司都在纠结是否要执行code review,既希望改进代码质量,又担心带来的负担会拖慢项目进度。实时上,在软件开发中质量和效率往往并不是二选其一的关系。能产出高质量代码的团队通常效率也非常高。
  在我作为工程师的职业经历中,自动化测试和code review可说是能同时提高代码质量和开发效率的两个有效的手段。所谓code review,和学术界的peer review类似。Peer review是由同事或同行对一位作者的作品进行查阅并提出建议和问题,只有当所有提出的问题都得到满意的答案后,作品才能发表。对于code review来说,作品是代码,发表是把代码commit到官方代码库。
  在Code Complete这本书中讲述了两个很有说服力的案例。在一项对同一个团队开发的很多个程序进行对比的研究中,没有经过review的程序平均每100行有4.5个错误,而经过review的程序平均每100行只有0.82个错误,也是说80%的错误在review中被修正了。AT&T的一个200多人的部门在开始执行code review后,开发效率提高了14%,而错误减少了90%左右。
  除了减少缺陷,避免在诊断错误上浪费时间,review的过程还可以通过相互的督促保证代码有好的可读性、文档、风格,并同时检查测试覆盖率等开发过程中的规范,从而提高团队的协作效率。对于所有复杂的事情来说,总是越早发现问题,解决问题的成本越低。
  对于经验不足或者刚开始一份新工作的人来说,通过code review可以得到更的人帮助,更快熟悉现有的规范和架构,在新的环境和团队中快速提升。
  对于的工程师来说,让其他同事review代码,有利于在团队中传播经验、知识和好的实践。身边的同事水平提高会让自己的工作也更高效。并且谁都有需要休假的时候,无论是公司还是个人都不希望有太多工作因此而停滞,如果有平时熟悉自己工作的同事,这个问题很好解决。
  像很多其他事情一样,code review难的是迈出第一步。一旦开始,花在review过程的每一分钟都会很快被成倍地赚回来。如果你不在一个可以一下改变团队流程的位置上,那么至少可以和认同这件事的少数同事先开始实践,当价值开始体现的时候,相信其他人会乐于效仿。