敏捷开发中的Code Review
作者:网络转载 发布时间:[ 2013/7/19 10:25:33 ] 推荐标签:
一些敏捷团队在实施敏捷开发中忙于编码、忙于Unit Test、忙于沟通、忙于Build等,虽然也有编码审核阶段,但大都浮于表面,流于形式,效果不佳。本文结合实践,介绍笔者对敏捷开发中CodeReview的理解和相关经验。
敏捷开发中Code Review的目的及内容
做任何事情,首先要清晰为什么要做,才能有目标和动力把事情做得更好,Code Review 也是如此。只有清晰明确了敏捷团队进行CodeReview 的动机,才能以此为方向开展后续工作。下面我们推荐的敏捷开发中常见的Code Review的目的:
设计合理性Review
在笔者的另一篇文章中《敏捷开发中的架构设计》谈到,敏捷开发中崇尚Code is design,对开发人员提出了比以往更高的要求,即需要开发人员不断地重构出合理的设计。所以敏捷开发中的Code Review也需要承担一部分“结对设计”和“设计把关”的职责。
这部分的Code Review 包括:设计的合理性(如实现方法,数据结构,设计模式,扩展性考虑等),是否存在大量重复代码和其他组件是否有重复的代码,包结构设计是否合理等。
笔者了解的一些项目中, 进行敏捷开发后, 提高了开发效率, 但是设计的质量却下降了。如Repeat Yourself 的现象(特别是跨组件之间的Repeat Yourself 现象);更有甚者,在笔者看到一个某银行的应用中(不是国内的),数据库连接和操作是直接在JSP中写SQL语句。
像这些Bad Design 的例子还是很多的。这些在重构的时候应该由开发人员解决。但考虑到不同开发人员之间技术功底不一,很有必要在Code Review阶段进行Review和讨论。
互为Backup
这是很容易被忽略,但是又很重要的一个Code Review的目的。
我们知道,敏捷开发中强调高质量的代码胜过详细的文档,所以某种程度上来说Code is Document。敏捷开发中的代码承担了一部分Document的职责,即传递技术的作用。
Code Review 中,Review 的开发人员了解代码的设计和实现,传递了技术,开发人员互为Backup,方便后期的维护,也减少了项目风险。
分享知识、设计、技术
这也是很容易被忽略的一个很重要的目的。敏捷开发是一个中央集中控制到个体发挥积极性的过程,中央集中控制的优点是有统一的视图和控制,经常开大会,开长会,这样知识和经验也较容易集中。敏捷开发中,分散在两个Scrum Team的开发人员之间,如果没有好的机制,相互沟通也会相对较少,造成知识和好的经验无法在整个团队传播。
笔者参加的项目中碰到了类似情况, 当时我们整个团队分成三个Scrum Team,其中一个Scrum Team负责一个Eclipse 工具的开发, 其中用到的一些功能和知识在其他ScrumTeam上以前都有涉及过。当时负责开发的同事非常而且能力突出,但由于不知道其他Scrum Team同事有这方面的经验,没有很好地分享以往好的经验和知识,以至于后导致浪费了一些学习的成本。
Code Review是一个学习和享受的过程,一个开发人员的能力有限,而Code Review正是这样的一种机制,让好的知识、设计在团队中分享,实现整体团队的成长和整体的效益大化。
代码可读性
如上所说,敏捷开发中强调高质量的代码胜过冗余的文档,所以Code某种程度上是Document。敏捷开发中,代码的要求不止是能运行功能正确的代码,而是有了更高的要求,即Code for maintenance。
可维护的代码,需要清晰,可读性强,这里可读性代码检查不是指代码格式(代码格式可以通过工具检查出),而是指代码语义。在笔者的文章《软件可消费性设计》中有一些这方面的讨论和建议。
Code中的“地雷区”Review
代码中的逻辑,除了业务逻辑,还应该包括技术逻辑。技术逻辑是实现逻辑, 比如数据库连接打开是否忘记关闭,是否正确使用线程,Exception 处理,密码是否加密存储等。
我把这些常出现错误的地方,而且是测试不容易发现的地方,称为Code中的“地雷区”。这些“地雷区”在Code Review 中是值得花费一些时间进行维护和检查的。
建议,在整个团队中维护并共享“地雷区”注意事项列表,以及统一的处理方式和机制。并在编码和Code Review过程中都按照团队的佳实践进行。
发现代码中的业务逻辑错误
业务逻辑指的是代码开发的功能是否符合业务需求,如一个加法函数,检查其是否真的实现了加法的功能。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11