研发过程之代码评审

     在研发过程中,为了保证代码质量,很多团队都会使用代码评审,或者叫做代码Review。一般情况下,代码Review都会采用集体Review的形式。

   集体Review

   形式: 一个团队,大家坐在一间会议室里面。一人进行讲解自己的业务和代码实现,团队的其他成员进行Review,提出问题,发现问题和补充不足。

   这样可以达到以下的目的:

   1.Linus定律 "只要有足够多的眼睛,就可让所有问题浮现"。每个人思考和理解事情的角度不同,这样发现问题也不尽相同,人数越多,发现问题也就越全面。

   2.在进行补充和提出建议的过程中,可以达到组内的开发规范和标准的传播,使大家明白统一标准。

   3.在讲解的过程中,和大家提出问题,发现问题的过程中,可以达到经验和知识的共享。

   缺陷:耗时过长,在开发时间较短的时候,会造成时间压力过大。虽然能减少后期成本,但是对于当时来说,短期的压力。

 

   因为集体Review耗时过长,往往会耽误大家时间,特别是项目时间紧张的时候,项目负责人往往顶不住压力,选择不Review,或者选择自己一个人进行Review,把问题发给大家。

   负责人Review

   形式:项目负责人进行checkout所有代码,进行逐个Review,把发现的问题email或者当面告知相关人员。

   这样可以达到以下的效果:

   1.避免员工设计或者代码出现问题。

   2.可以达到项目负责人的开发规范和标准的传播,使大家了解其标准。

   缺陷:对项目负责人要求较高,并且耗用其精力过多,使其无法处理更多关键的事项。同时因为一个人进行Review,无法对问题进行全面细致的分析,容易遗漏问题。

 

    后来借鉴了结对编程的思想,把结对编程改为了结对Review,取得了一定的效果。

    结对Review

    形式:项目组成员进行结对,两人一组,互相Review对方的代码。每次进行轮换Review的对象。

    这种形式,中和了负责人Review和集体Review的优点,但是同时也中和了上面两个的缺点,达到的是一种均衡。

     效果如下:

           1)两个人互相Review的时候,可以达到这二人业务和经验交流。

           2)Review的过程中可以发现bug,并且在讲的过程中,讲述人也可以发现自身的bug。

           3)加快Review进度,相对于集体Review来说,可以大幅提高Review效率,同时保证一定的效果。

           4)可以达到组织知识的充分共享,组内的人会和每个人进行结对Review,可以全面传播组内人员的经验和知识。

       缺陷:1)如果两人经验都不足的话,技术交流的效果不明显。但可以通过和另外一人的交流时得到补充。所以建议最开始的时候,指定结对Review人员,一名经验丰富者带一名经验较低人员。

                 2)缺少足够多的眼睛,有些bug会被遗漏。

                 3)需要Review的双方都要有责任心,如果任何一方不负责的话,都会产生问题遗漏。

 

      上面三种Review各有其优点和缺点,建议项目上根据自己的情况进行选择,或者组合使用。现在建议的方式是每周1~2次结对Review,每2周一次集体Review,研发负责人根据情况进行抽查Review,或者在项目初期和后期进行加强Review。

你可能感兴趣的:(代码)