代码复审和结对编程

代码复审和结对编程

  

此次由谢晨强和谢文杰结对

代码复审的目的在于:

1、找出错误的代码,比如:

 1)编程错误,如一些恰巧骗过了编译器的错误

 2)不符合团队代码的地方

2、发现逻辑错误,程序可以编译通过,但是代码的逻辑是错误的

3、发现错误算法,比如使用的算法不够优化,边界条件没有处理好

4、发现潜在的错误和回归性错误--当前的修改导致以前的缺陷又重复出现

5、发现可能需要改进的地方

6、互相教育开发人员,传授经验,让更多的成员熟悉项目各部分的代码,同时熟悉和应用领域的实际知识

在代码复审中还要做什么:

好的复审者不光是要注意到程序员修改了什么,还要把眼光放远,问一些其他问题,比如:

1)“这么修改了之后,有没有别的功能受到影响?”

2)“项目中还有别的什么东方需要改吗?”

3)“有没有留下足够的说明,让将来维护代码时不会出现问题?”

4)“对于这样的修改,有没有其他的成员需要告知?”

5)“导致问题的根本原因是什么?我们以后如何能自动避免这样的情况再次出现?”

下面几个问题是不该在代码复审时关注的

1 不应该承担发现代码错误的职责。代码复审主要是审核代码的质量,如可读性,可维护性,以及程序的逻辑和对需求和设计的实现。代码中的bug和错误应该由单元测试,功能测试,性能测试,回归测试来保证的(其中主要是单元测试,因为那是最接近Bug,也是Bug没有扩散的地方)

2  不应该成为保证代码风格和编码标准的手段。编码风格和代码规范都属于死的东西,每个程序员在把自己的代码提交团队复审的时候,代码就应该是符合规范的,这是默认值,属于每个人自己的事情,不应该交由团队来完成,否则只会浪费大家本来就不够的时间。

 

在结对编程模式下,一对程序员肩并肩、平等地、互补地进行开发工作。他们并排坐在一台电脑前,面对同一个显示器,使用同一个键盘,同一个鼠标一起工作。他们一起分析,一起设计,一起写测试用例,一起编码,一起做单元测试,一起做集成测试,一起写文档等。结对编程的好处有:

1 在开发层次,结对编程能提供更好的设计质量和代码质量,两人合作解决的能力更强。

2 对开发人员来说,结对工作能带来更多的信心,高质量的产出能带来更高的满足感。

3 在企业管理层次上,结对能更有效地交流,相互学习和传递经验,分享知识,能更好地应对人员流动。

结对编程让两个人所写的代码不断地处于“复审”的过地程,程序员们能够不断审核,提高设计和编码质量,可以及时发现并解决问题,避免把问题拖到后面的阶段去。结对编程的过程是个互相督促的过程,每个人的一举一动都在别人的视线之内,所有的想法都要受到对方的评价。这种督促的压力,使得程序员更认真地工作。结对编程迫使程序员必须频繁地交流,而且要提高自己的技术能力,以免被别人小看。

结对编程是一个渐进的过程——有效的结对编程不是一天就能做到的。结对编程是一个相互学习、相互磨合的渐进过程。开发人员需要时间来适应这种新的开发模式。一开始,结对编程很可能不比单独开发效率高,但是在度过了学习阶段后,结对编程小组的开发质量、开发时间通常比两人单独开发有明显的改善。

 

 

 

 

俗话说”三个臭皮匠,胜过一个诸葛亮”,大家在做同一件事时,集思广义发挥各自优点,可以使我分析更能切中要害。比如在设计阶段,我们其中一个人想到采用策略模式来解决这个问题,采用一个接口作为抽象行为层。另外一个人发现我们这些具体的算法类有一些公用行为,于是考虑用抽象类代替原来的接口作为抽象行为层,这样可以把那些公用行为上移到抽象层,大大减少了冗余代码,使设计变得更加优雅。“三人行必有我师”,相互学习对方的技能,可以提升自己水平。比如我们需要透过一个SQL语句去查找一组多次变更的合同。

得到的经验和教训:

1应该及时的进行角色轮换,我们没有进行角色轮换,一直是一个人做Driver,另外一个人做Navigator ,这样有时会因为过度思考,而导致观察力和判断力出现偏差。2.结对编程需要相互尊重,工作及时得到同伴的肯定,自信心和成就感会增强,觉得工作很愉快,很愿意很partner一起工作,这样就会提高生产率。

 

 

 

 

猜你喜欢

转载自blog.csdn.net/xcq15293578418620523/article/details/80109228
今日推荐