`
amigo
  • 浏览: 50736 次
  • 来自: ...
社区版块
存档分类
最新评论

高效代码审查的十个经验

 
阅读更多
代码审查(Code Review)是软件开发中常用的手段,和QA测试相比,它更容易发现和架构以及时序相关等较难发现的问题,还可以帮助团队成员提高编程技能,统一编程风格等。

1.  代码审查要求团队有良好的文化

团队需要认识到代码审查是为了提高整个团队的能力,而不是针对个体设置的检查“关卡”。

“A的代码有个bug被B发现,所以A能力不行,B能力更好”,这一类的陷阱很容易被扩散从而影响团队内部的协作,因此需要避免。

另外,代码审查本身可以提高开发者的能力,让其从自身犯过的错误中学习,从他人的思路中学习。如果开发者对这个流程有抵触或者反感,这个目的就达不到。

2.  谨慎的使用审查中问题的发现率作为考评标准





在代码审查中如果发现问题,对于问题的发现者来说这是好事,应该予以鼓励。但对于被发现者,我们不主张使用这个方式予以惩罚。软件开发中bug在所难免,过度苛求本身有悖常理。更糟的是,如果造成参与者怕承担责任,不愿意在审查中指出问题,代码审查就没有任何的价值和意义。

3.  控制每次审查的代码数量

根据smartbear在思科所作的调查,每次审查200行-400行的代码效果最好。每次试图审查的代码过多,发现问题的能力就会下降,具体的比例关系如下图所示:





我们在实践中发现,随着开发平台和开发语言的不同,最优的代码审查量有所不同。但是限制每次审查的数量确实非常必要,因为这个过程是高强度的脑力密集型活动。时间一长,代码在审查者眼里只是字母,无任何逻辑联系,自然不会有太多的产出。

4.  带着问题去进行审查

我们在每次代码审查中,要求审查者利用自身的经验先思考可能会碰到的问题,然后通过审查工作验证这些问题是否已经解决。一个窍门是,从用户可见的功能出发,假设一个比较复杂的使用场景,在代码阅读中验证这个使用场景是否能够正确工作。

使用这个技巧,可以让审查者有代入感,真正的沉浸入代码中,提高效率。大家都知道看武侠小说不容易瞌睡,而看专业书容易瞌睡,原因就是武侠小说更容易产生代入感。

有的研究建议每次树立目标,控制单位时间内审核的代码数量。这个方法在我们的实践中显得很机械和流程化,不如上面的方法效果好。

5.  所有的问题和修改,必须由原作者进行确认

如果在审查中发现问题,务必由原作者进行确认。

这样做有两个目的:


•确认问题确实存在,保证问题被解决
•让原作者了解问题和不足,帮助其成长
有些时候为了追求效率,有经验的审查者更倾向于直接修改代码乃至重构所有代码,但这样不利于提高团队效率,并且会增加因为重构引入新bug的几率,通常情况下我们不予鼓励。

6.  利用代码审查激活个体“能动性”

即使项目进度比较紧张,无法完全的进行代码审查,至少也要进行部分代码的审查,此时随即抽取一些关键部分是个不错的办法。

背后的逻辑是,软件开发是非常有创造性的工作,开发者都有强烈的自我驱动性和自我实现的要求。让开发者知道他写的任何代码都可能被其他人阅读和审察,可以促使开发者集中注意力,尤其是避免将质量糟糕,乃至有低级错误的代码提交给同伴审查。开源软件也很好的利用了这种心态来提高代码质量。

7.  在非正式,轻松的环境下进行代码审查

如前所述,代码审查是一个脑力密集型的工作。参与者需要在比较轻松的环境下进行该工作。因此,我们认为像某些实践中建议的那样,以会议的形式进行代码审查效果并不好,不仅因为长时间的会议容易让效率低下,更因为会议上可能出现的争议和思考不利于进行如此复杂的工作。

8.  提交代码前自我审查,添加对代码的说明

所有团队成员在提交代码给其他成员审查前,必须先进行一次审查。这次自我修正形式的审查除了检查代码的正确性以外,还可以完成如下的工作:


•对代码添加注释,说明本次修改背后的原因,方便其他人进行审查。
•修正编码风格,尤其是一些关键数据结构和方法的命名,提高代码的可读性。
•从全局审视设计,是否完整的考虑了所有情景。在实现之前做的设计如果存在考虑不周的情况,这个阶段可以很好的进行补救。
我们在实践中发现,即使只有原作者进行代码审查,仍然可以很好的提高代码质量。

9.  实现中记录笔记可以很好的提高问题发现率

成员在编码的时候应做随手记录,包括在代码中用注释的方式表示,或者记录简单的个人文档,这样做有几个好处:


•避免遗漏。在编码时将考虑到的任何问题都记录下来,在审查阶段再次检查这些问题都确认解决。
•根据研究,每个人都习惯犯一些重复性的错误。这类问题在编码是记录下来,可以在审查的时候用作检查的依据。
•在反复记录笔记并在审查中发现类似的问题后,该类问题出现率会显著下降
10.  使用好的工具进行轻量级的代码审查

“工欲善其事,必先利其器”。我们使用的是bitbucket提供的代码托管服务。

每个团队成员独立开发功能,然后利用Pull Request的形式将代码提交给审查者。复审者可以很方便在网页上阅读代码,添加评论等,然后原作者会自动收到邮件提醒,对审阅的意见进行讨论。

即使团队成员分布在天南海北,利用bitbucket提供的工具也能很好的进行代码审查。
分享到:
评论

相关推荐

    编写PHP高效代码的经验探讨.pdf

    【PHP高效代码编写经验】 在Web开发领域,PHP作为一门广泛应用的服务器端脚本语言,其性能和效率对于网站的运行至关重要。为了提高PHP代码的性能,开发者需要深入理解影响PHP运行速度的因素,并掌握相应的优化策略...

    写好代码的十个秘诀_微软中国研究院

    微软中国研究院分享了“写好代码的十个秘诀”,旨在帮助开发者提升编码技能,实现更高效、更优雅的编程。以下是对这十个秘诀的详细解读: 1. **明确目标与设计** 编码前应明确功能需求,进行良好的设计,包括模块...

    codeReviewSystem:代码审查系统

    10. **文档与社区支持**:一个完善的系统需要有详细的文档来指导用户使用,同时,活跃的社区可以提供技术支持和经验分享,促进系统的持续改进。 综上所述,codeReviewSystem通过laravel框架和HTML前端技术,为...

    码出高效:阿里Java开发带书签(非扫描)

    9. **代码审查**:阐述了代码审查的目的和流程,帮助开发者养成良好的代码习惯。 10. **版本控制**:讲解了Git等版本控制工具的使用,以及如何有效地进行代码提交和协作。 此外,书中还可能包含关于文档编写、项目...

    awesome-code-review:很棒的代码审查资源列表-文章,论文,工具等

    这些工具提供了方便的代码对比、讨论和合并功能,有助于团队成员更高效地进行代码审查。 2. **自动化工具**:除了手动审查外,还有自动化代码审查工具,如ESLint、Pylint等,它们能自动检测代码风格问题和潜在的...

    Best Practices For Peer CodeReview

    本篇文章基于《Best Practices for Peer Code Review》一文的内容,深入探讨了科学验证及实践经验支持下的11条高效、轻量级的同行代码审查最佳实践。通过这些技巧的应用,可以确保代码审查不仅能够提升代码质量,还...

    代码之美(深入解剖代码)

    7. **代码审查**:代码之美也体现在团队协作中,书里可能会讨论代码审查的重要性,以及如何有效地进行代码审查,提升团队的整体代码质量。 8. **软件工程原则**:遵循一些基本原则,如单一职责原则、开闭原则等,...

    程序员不知道的几个chatgpt高效办公使用案例

    ChatGPT可以理解并分析代码,帮助程序员进行快速的代码审查。当你有一段不确定的代码或者遇到难以解决的bug时,只需将代码片段输入ChatGPT,它可能会提供修正建议或者解释代码的工作原理,从而加速问题的解决过程。...

    代码大全,高清中文版, 带目录

    6. **代码审查**:代码审查是保证代码质量的重要手段,书中介绍了如何进行有效的代码审查,以及审查过程中应注意的问题。 7. **文档与注释**:良好的文档和注释可以使代码更易于他人理解和维护,书中提供了编写清晰...

    完整的代码大全 pdf版

    10. **代码审查**:代码审查是提高代码质量的重要环节,书中介绍了如何进行有效的代码审查,包括审查的流程、技巧和目标。 总的来说,《代码大全》是一本综合性的编程指南,涵盖了软件开发的各个阶段,从编码规范到...

    代码大全2

    《代码大全2》是Steve McConnell...《代码大全2》涵盖了软件开发的多个方面,无论你是初学者还是经验丰富的开发者,都能从中受益匪浅。通过阅读和实践书中的建议,可以不断提升自己的编程水平,成为一名优秀的程序员。

    代码大全PPT文档

    9. **代码审查**:代码审查是提升团队协作和代码质量的有效手段。PPT可能会讲解代码审查的目的、流程以及有效审查技巧。 10. **文档与注释**:高质量的文档是软件项目不可或缺的部分。PPT可能涵盖了编写API文档、...

    what to look for in a code review.pdf

    作者Trisha Gee是一位经验丰富的开发者,她在书中分享了关于代码审查的重要技巧。 在进行代码审查时,我们需要考虑以下几个关键点: 1. **测试**:审查代码时,首先应检查是否包含相应的测试用例。测试能确保新...

    写好代码十个秘诀(林斌博士)

    林斌博士在其著作《写好代码十个秘诀》中,分享了一系列宝贵的编程经验和技巧,旨在帮助开发者们提高代码的质量,提升软件的性能与可维护性。下面,我们将对林斌博士提出的这十个秘诀进行深入解析,希望能为读者带来...

    JAVA优质代码编写的30条可行建议

    - 定期进行代码审查和重构,保持代码的整洁和高效。 - 利用重构工具自动完成重复工作。 ### 13. 代码简洁 - 遵循DRY(Don't Repeat Yourself)原则,避免重复代码。 - 采用合适的抽象层次,使代码更易于理解。 ###...

    代码大全(文字版)

    书中阐述了代码审查的最佳实践,包括何时进行、如何提出建设性反馈以及如何处理审查结果。 8. **性能优化**:尽管“过早优化是万恶之源”,但了解如何分析和优化性能仍然是必要的。书中讲解了性能瓶颈的识别、基准...

    代码大全第二版

    9. **代码审查**:书中提倡代码审查作为提升代码质量的重要手段,解释了如何有效地进行代码审查并提出建设性的反馈。 10. **持续集成与自动化**:随着敏捷开发的普及,持续集成和自动化测试成为现代软件开发的基石...

    EditPlus代码编辑工具

    3. **文件查找与替换**:EditPlus提供了强大的查找和替换功能,不仅能在当前文档中进行操作,还能在整个项目或指定目录下进行全局搜索,这对代码审查和修改非常有用。 4. **宏录制与播放**:对于需要重复执行的操作...

    代码大全(第二版)较清晰目录很全

    10. **代码审查**:强调了代码审查作为提升团队协作和代码质量的有效手段,阐述了如何进行有效的代码审查和提出建设性反馈。 11. **文档编写**:鼓励编写清晰的文档,包括类和函数的文档字符串、用户手册和API参考...

Global site tag (gtag.js) - Google Analytics