代码评审:Just do it!

在“The Soft Side of Peer Reviews”(同级评审的柔软面)一文中,Karl Wiegers以下面这段高调的声明开篇:

译者注:Karl E. Wiegers是世界著名软件工程大师,以需求、项目管理、过程改进等领域的研究和实践著称。曾任IEEE Software杂志编委和权威期刊SoftwareDevelopment的特邀编辑和专栏作家。他曾经在柯达公司工作18年,领导过大型开发团队的过程改进。作为一位多产作家,他凭借《软件需求》和《创建软件工程文化》两次荣获被称为“软件开发奥斯卡”的Jolt生产效率大奖。他还著有《软件同级评审》一书。

同级评审——软件交付物原作者以外的其他人帮忙检查缺陷、促进提升的一种活动——是最有效的提高软件质量的工具之一。同级评审的方法包括审查、走查、同级桌查、以及其他类似的活动。在从同级评审中受益了将近15年之后,我绝不再愿意在一个不做同级评审的团队里工作。

在Vertigo公司参与了一段时间的代码评审之后,我坚信,同级之间的代码评审是你为提高代码质量所能做的最大的贡献。如果你现在还没有跟另外一个开发人员开展代码评审活动的话,你实际上正在放纵大量的Bug留在你的代码里,也使自己错失了一些关键的职业技能发展的契机。就我个人而言,在我找到一位同事帮我检查完代码之前,我不会认为我已经完成了编码。

不过,我说的话你可能不信。McConnell在《代码大全》(Code Complete)一书里为代码评审的功效提供了大量的证据,摘录如下:

译者注:Steve McConnellConstrux公司的首席软件工程师,在公司里监督软件工程实施。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 GatesLinus Torvalds齐名。

……孤立的软件测试功效有限——在平均缺陷发现率方面,单元测试只能达到25%,功能测试可以达到35%,而集成测试也只能达到45%。相比之下,设计和代码审查的平均功效可以达到55%和60%。评审结果的案例研究非常鼓舞人心:

  • 在一个软件维护的组织里,在引入代码评审之前,55%的单行维护代码改动都是错误的。在引入评审之后,错误率降到了2%。如果考量所有的代码改动,在评审引入之后,95%的代码改动第一次提交的时候就对了;而在评审引入之前,首次代码提交的正确率低于20%。
  • 在一个软件开发的组织里,由同一批人开发11个程序,前5个在开发过程中不做评审,后6个做评审。在所有的程序都正式发布之后,前5个程序平均每100行代码有4.5个错误,而后6个程序平均每100行代码只有0.82个错误。代码评审可以消除80%以上的错误
  • 安泰保险公司通过代码审查发现了程序里82%的错误,他们因此能够减少20%的开发资源投入。
  • IBM的Orbit项目(500000行代码)使用了11级的审查。软件提前交付了,错误率只有大概1%(这个比率通常是可以接受的)。
  • AT&T内部一个200人的组织报告称,在他们引入代码审查之后,生产率提升了14%,而软件缺陷降低了90%。
  • 美国国家航空航天局下属的喷气推进实验室估计,在早期阶段发现并修复缺陷所节省的成本,按照审查次数折算下来,每次审查可以省下大概25000美元。

代码评审的惟一障碍是找到一位你尊敬的开发人员,然后留出专门的时间来做这件事。一旦你开始这么做了,我相信你会很快发现,你在代码评审中花的每一分钟都会得到十倍的回报!

代码评审:Just do it!

如果你所在的公司或组织刚刚开始做代码评审,我强烈推荐Karl的这本书:《软件同级评审》(Peer Reviews inSoftware: A Practical Guide)。Karl在他的网站上提供的样章也不失为一份极好的入门资料。

你可能感兴趣的:(it)