摘要:代码评审是指在软件开发过程中,通过对源代码进行系统性检查的过程。通常目的是查找系统缺陷,保证软件总体质量和提高开发者自身水平。这可不是一件简简单单的事。

当代码审查被广泛采用的时候,有很多种方法可以完成代码审查,团队争相使用最好的方法来完成代码审查已经是很常见的了。

斗胆的说一句:干这行的,你还是需要一点灵活性的。至于怎样执行代码审查程序取决以下几点:

人员

你的员工当中有多少开发人员,又有多少专业知识和人际水平都很丰富的审查人员?有的团队里只有一个高级开发人员,他们既是事必亲躬的代码员,又是代码审查员,可他们的所得和付出并不成正比。在一个小的团队里,资历高低一直是个问题,不管你试图完成什么任务。

地理位置

你的团队在哪?分散在各个区域?还是集中在一个大办公室里?审查代码需要集中注意力和及时反馈,当开发人员坐在一起的时候这两点就变得容易多了。如果你的团队不是同地协作,像“Over-the-shoulder”这样的代码审查过程就很难实现。

行业

所在的这个行业有什么规则和制度?在一个纪律严明的行业,你就必须遵守审计和报告的规则,这就意味着有一定的方法可以追踪到你的代码审查的频率和质量。如果你在安全性第一的行业,在代码审查的时候你同样需要关注并避免安全漏洞。

复杂性

你的代码有多复杂?一个审查员够了吗?还是需要多个具备不同专业知识的审查员?比方说,游戏开发可能涉及到许多复杂的逻辑来处理角色转换和场景跟踪,同时还要将特效动画和内存管理技术进行合并。因此,具有多个“Sets of eyes”的代码可能是审查像游戏开发这样复杂代码最有效的方法。

许多情况下,对于不同的项目会有不同的需求——你可能有多个团队正在搭建用户配置和需求都不一样的应用程序。一个你信得过的代码审查工具能够帮你完成高质量的代码审查流程,不管你使用的是什么方法。下面给出一些小建议,审查流程结合审查工具,这也许能解决你平时遇到的一些问题。

1. 加强交流

任何类型的审查过程,不管是代码审查,文献审查,或是性能审查,最好能够面对面的完成。当使用工具完成代码审查之后,开发人员在规定时间内提供语言反馈,如果不在同一地点,可以通过电话或视频对反馈的信息进行交流,因此,你也可以把代码审查过程看作是一次合作与指导的机会。

2. 发挥特长

如果正在审查的代码和其他区域的代码有接触点,或对安全,性能,延伸性等有影响,那就必须让更多的人检查代码以确保所有的分枝都已被考虑到位。在这种情况下,最好建立一个包含所有专业知识的人员库。这个工具可以帮助你甄别这些有用的人,并分配到需要的代码团队。你也可以利用这个工具收集所有人员的评论并分享给整个审查团队,这样大家可以相互学习。

3. 共享代码审查评论

使用工具的好处之一就是集中人员来审查相同的代码,将一组人集中到一起做小组评审,让每个人站在自己的角度思考代码里潜在的“问题”。每一个人都要对代码进行评论,并且允许团队成员看到相互之间的评论。能同时看到代码和别人的评论对整个团队来说是有很多好处的:

 

  • 没有重复的评论——第一个人说过的,第二个人就不能重复说。
  • 团队学习——能够看到其他人的评论,审查员可以相互学习。
  • 重复审查——有些时候一个审查员可以抓住另一个审查员的错误,这样就可以阻止错误被引入代码。

 

4. 审查指标

在代码审查过程中有一件事是肯定的,那就是使用工具指标。利用指标作为改进代码库的方法,这在代码审查过程具有很强的附加功能。工具可以告诉你哪些是最常见的错误,它们被引用在哪里,又在哪些地方重复过。同时可以根据在循环审查阶段,建立在缺陷记录基础上的质量问题,来判断哪些代码看上去易受攻击。在检查的时候就能阻止bugs,这明显是确保代码质量的最经济最高效的方法。metrics的使用还可以帮助开发人员找到哪些方面需要加强训练,以便以后开发出更好的代码。

5. 挖掘未来的代码审查员

你必须提升自己的的高度。因为要想识别出团队里的人哪些是可以进入审查员角色,就要花很大的精力和时间。理想情况下,你团队里的所有开发人员都能执行同行审查,这是合作程度和效率最高的方法,为了能够准时交付优质代码。但这需要花大量的时间和精力来打造这样一个高水平的团队。

代码审查很重要,审查过程中,审查人员和开发人员不是对立的关系,而是互助、沟通、协作和学习的过程。团队形成互助、互学的气氛,既能互相增长团队的知识和经验,还能把产品做得更好。Code Review的核心是:互助,沟通,协作,学习的过程,这是一个美妙而享受的过程,是跨越需求分析、架构设计、编码等各阶段的过程。(编译/薛梁 责编/夏梦竹)

原文:smartbear

http://www.csdn.net/article/2013-06-20/2815921-Making-Code-Review-Work