在“The Soft Side of Peer Reviews”(同级评审的柔软面)一文中,Karl Wiegers以下面这段高调的声明开篇:
译者注:Karl E. Wiegers是世界著名软件工程大师,以需求、项目管理、过程改进等领域的研究和实践著称。曾任IEEE Software杂志编委和权威期刊SoftwareDevelopment的特邀编辑和专栏作家。他曾经在柯达公司工作18年,领导过大型开发团队的过程改进。作为一位多产作家,他凭借《软件需求》和《创建软件工程文化》两次荣获被称为“软件开发奥斯卡”的Jolt生产效率大奖。他还著有《软件同级评审》一书。
同级评审——软件交付物原作者以外的其他人帮忙检查缺陷、促进提升的一种活动——是最有效的提高软件质量的工具之一。同级评审的方法包括审查、走查、同级桌查、以及其他类似的活动。在从同级评审中受益了将近15年之后,我绝不再愿意在一个不做同级评审的团队里工作。
在Vertigo公司参与了一段时间的代码评审之后,我坚信,同级之间的代码评审是你为提高代码质量所能做的最大的贡献。如果你现在还没有跟另外一个开发人员开展代码评审活动的话,你实际上正在放纵大量的Bug留在你的代码里,也使自己错失了一些关键的职业技能发展的契机。就我个人而言,在我找到一位同事帮我检查完代码之前,我不会认为我已经完成了编码。
不过,我说的话你可能不信。McConnell在《代码大全》(Code Complete)一书里为代码评审的功效提供了大量的证据,摘录如下:
译者注:Steve McConnell是Construx公司的首席软件工程师,在公司里监督软件工程实施。Steve曾为微软公司、波音公司和西雅图地区的公司工作过。他的著作有:1996年的《快速软件开发》(RapidDevelopment)、1998年的《软件项目长存之道》(Software ProjectSurvival Guide)和2004年的《专业软件开发》(ProfessionalSoftware Development)。由于他的杰出成就,Steve曾两度获得SoftwareDevelopment杂志的优秀震撼大奖(Jolt ExcellenceAward)。Steve还曾是SPC评估专业版的开发领袖,软件开发生产力大奖(SoftwareDevelopment Productivity Award)的获得者。1998年,Software Development杂志的读者推选Steve McConnell为软件行业最有影响力的三个人物之一,与Bill Gates、Linus Torvalds齐名。
……孤立的软件测试功效有限——在平均缺陷发现率方面,单元测试只能达到25%,功能测试可以达到35%,而集成测试也只能达到45%。相比之下,设计和代码审查的平均功效可以达到55%和60%。评审结果的案例研究非常鼓舞人心:
代码评审的惟一障碍是找到一位你尊敬的开发人员,然后留出专门的时间来做这件事。一旦你开始这么做了,我相信你会很快发现,你在代码评审中花的每一分钟都会得到十倍的回报!
如果你所在的公司或组织刚刚开始做代码评审,我强烈推荐Karl的这本书:《软件同级评审》(Peer Reviews inSoftware: A Practical Guide)。Karl在他的网站上提供的样章也不失为一份极好的入门资料。