回页首
10. 评审一部分的代码,就算您不能全部完成,以从自我效能感(Ego Effect)中获益
想象一下您自己坐在编译器的前面,任务是需要修复一个小小的错误(bug)。但是您知道只要您说出了“我完成了”,您的同行 — 或者更糟,您的老板 — 就要检查您的工作了。这会改变您的开发个性吗?所以在您工作时,一般是在您声明代码评审完成之前,就会更加的谨慎了。如此您立即就会成为一个更好的开发员了,因为在您背后别人议论您时就会说,“他的员工非常谨慎,他真是一个不错的开发员”;而不是“他犯了大量愚蠢的错误(bug)。当他说工作完成时,实际上还差着远呢”。
自我效能感(Ego Effect)会促使开发员编写更好的代码,因为他们知道其他人将会查看自己编写的代码及作品。没有人想被其他人认为自己经常犯初级的错误(bug)。Ego Effect 促使开发员在向其他人交付作品时更加谨慎地进行评审。
Ego Effect 的一个良好特征,是不管评审者要对所有的代码变更负责,还是仅仅执行“点检查”,就像随机性的药物测试一样,都能正常地发挥作用。如果您的代码有三分之一的几率被评审者抽中进行评审,那么它仍然足以刺激评审者谨慎工作。如果您只有十分之一的概率被抽中检查,那么可能您就不会如此勤奋了。您知道您会说,“哈,我很少犯错”。
评审 20–33% 的代码时,从 Ego Effect 中获得花费时间方面的收益可能最大,评审 20% 的代码肯定要比不评审强很多。
回页首
11. 采用轻量级,工具支持的代码评审
代码评审一般有些主要的类型和无数的变数,而指南却能适用它们中的任何一个。但是,为了完全优化团队花在评审之上的时间,我们要使用工具支持的轻量级评审过程来得到最优的结果。搜索缺席时,它是有效的,实用的。
规范,或者 重量级的 检查已经流行了 30 年。它已经不是评审代码的有效形式了。重量级检查平均花费的时间是每 200 行代码 9 个小时。尽管它很有效,但是严格的过程需要三到六个参与者,并进行一系列繁琐的会议以讨论具体的细节。不幸的是,尽管需要繁琐的过程,但是大多数的公司没有条件将编程人员集成起来,进行长时间的会议。最近的几年,许多开发公司已经完全放弃了会议安排,纸质代码阅读,以及繁琐的作品收集工作,转而采用新型 轻量级 过程,以从规范的会议及老式重量级过程的重压中解放起来。
我们使用在 Cisco 中的案例研究,来确定轻量级技术与规范过程比较的特点。结果显示轻量级代码评审所需要的时间只是规范评审的五分之一(甚至更少),而且前者能够发现更多的错误(bug)。
尽管轻量级代码评审拥有很多的方法,例如实时评审和电子邮件评审,但是最有效的评审方法还是使用协作性的软件工具来促进评审,这些软件工具例如 SmartBear 的 CodeCollaborator(见于图 4)。
图 4. Cisco 研究中所使用到的轻量级代码评审工具,CodeCollaborator
图 4 的大图
CodeCollaborator 是与 IBM® Rational Team Concert 工作流程相集成的唯一代码评审工具。它将源代码评审与聊天形式的协作集成起来,从而使开发员从联系注释与私人代码行的繁琐活动中解放了出来。当程序员向工作项添加更改项进行评审时,在 CodeCollaborator 中将会自动创建评审,并分配适当的批准者。团队成员可以直接注释代码,与代码开发者聊天,并就每一个问题进行协作,追踪错误(bug)并修复缺陷。整个过程不需要会议,打印,或者安排日程。
有了基于 Rational Team Concert 与 CodeCollaborator 的轻量级评审过程,团队就可以进行更有效的评审,并实现代码评审的有利点。
CodeCollaborator 获得了 "Ready for IBM Rational Software" 针对 Rational Team Concert V2 和 V3 的认证,以及针对 IBM® Rational® ClearCase® 和 IBM® Rational® Synergy® 的认证。 |
到现在为止,您已经被经实践证明有效的经验从头到尾武装起来了,以确保从过程和社会的角度来看,团队在代码评审过程之中能够节省大量的时间。当然,您必须确实 完成了 代码评审,以实现这些便利。对 100% 的代码使用评审的规范方法(有人对这个百分比存在异议,简单来说是不现实的。集成到 Rational Team Concert 环境之中的工具支持轻量级代码评审,提供了最强大的功能,因为它提供了一个有效的方法去搜索缺陷,而且不会涉及到开发员头痛的一些问题。有了正确的工具和这些实践方式,您的团队就可以对所有的代码进行同行评审,并在软件达到 QA 阶段之前就找到成本极高的错误(bug),这样您的客户每次都能够得到顶级品质的产品了。
为了方便您查看,下面总结了在一个简单列表中最容易保持的 11 项实践方式:
一次评审少于 200–400 行的代码。
目标为每小时低于 300–500 LOC 的检查速率。
花足够的时间进行正确缓慢的评审,但是不要超过 60–90 分钟。
确定代码开发者在评审开始之前就已经注释了源代码。
为代码评审和获取制度建立可定量化的目标,这样您才能改进流程。
使用检查列表,因为它可以极大地改进代码开发者和评审者的作品。
确认缺陷确实得到修复了。
培养良好的代码评审文化氛围,在这样的氛围中搜索缺陷被看做是积极的活动。
警惕“老大”效应。
原文转自:http://www.ibm.com/developerworks/cn/rational/11-proven-practices-for-peer-review/