Kode Reviews:危机中的项目自救

简介:
 10 月份 ACM  Communications 刊发了 George V. Neville-Neil 的文章: Kode reviews 101 -  A review of code review do ' s and don ' ts. 他的公司经历了一轮裁员,但是不久发现系统的某些部分内容没有人能理解,只能高薪聘之前的员工做 " 顾问 " 来收拾烂摊子 . 而这种情况已经再三上演 , 怎样才能让足够多的人了解系统 , Neville-Neil 给出的对策是 : 代码审查  Kode Reviews.

    

 何以至此

 

    Neville-Neil并没有详细说明他们的公司为何再三陷入这样的泥潭的,我们可以通过周围发生的事情做出一个猜测。事情的源头是系统中的一部分代码在功能完成之初就缺少必要的注释和文档,更糟糕的是有一些试验性的代码没有清除掉。这部分代码的编写者离开之后,接替者是不愿意修改或者删除不是他们编写的代码。他们的理由是:“我不懂那段代码,我来的时候就已经写好了”。这其实是典型的反模式:Lava Flow(岩浆流)-这些代码刚刚出现的时候还具有可变的本质,但是天长日久就像玄武岩一样坚硬难以去除。这种代码的影响比变量名不规范,面条代码的还要严重。

    编译器可以读你的代码但不了解你的意图和设计,于是只有写代码的人懂得那块代码的意图。事实上Neville-Neil的公司就真的高薪聘回那些代码编写者。

    而代码审查是可以在源头上将问题解决,问题解决的早晚付出的代价可是真的不一样的。

  

Why

 

        Neville-Neil指出一个事实:很多人会忽视代码审查,认为代码检查是非生产性的,只是一群人坐在一起了解那些他们不熟悉的代码。

         这种观点作者没有给出评价,我认为是对错参半:

  • 发现代码问题,找出系统中的Bug,提高软件质量
  • 团队中更多的人熟悉代码:这恰恰就是Neville-Neil希望的。
  • 代码检查会占用新功能的开发时间,但是将问题尽早的暴露出来

 

 Neville-Neil表示代码审查对于他们来讲有点亡羊补牢,但它依然是危机中项目良好的自救方式。

  

How

 不是所有的开发者都懂得如何进行代码审查,并保证代码审查的效果。

   Neville-Neil详细阐述了他对代码审查的从计划、组织到执行,以及如何保证过程有效的种种看法。我们一起来看一下:

 kodereview 

 

从上图看出,他将代码审查分成三个阶段:准备阶段,检查阶段,后续。而每一个阶段都有一些重要的原则来保证过程的有效性。

  • 准备阶段 要用心挑选要审查的代码,挑选最重要的部分,然后通知到与会者提前熟悉。
  • 安排时间 代码审查最被人诟病的就是对时间的占用,因此安排时间极其重要。首先时间安排在与会者头脑清楚的时候比如早晨,其次就是要控制会议的长度。
  • 检查阶段 代码检查的过程重要保持与会者的清醒状态,作者的建议是喝咖啡提神。 检查阶段的启动是以简短的介绍开始,能让与会者有一个总体的印象。之后的切入点是头文件、基础数据、基类,对代码有了一个基本的了解之后就可以深入到具体的方法了。
  • 检查什么 代码检查很容易纠缠于细节,很多人像玩游戏积累点数乐此不疲的指出每一处拼写错误,这转移了大家的注意力忽略了代码的整体结构,减少了挖掘出深层次的问题的可能。这类问题直接一带而过,然后继续。
  • 过程有效进行过程中,要做好记录(安排专门的会议记录人员),并在会议结束时做简单的回顾。白板和活动挂图都是很好的辅助工具。
  • 后续 之前的所有工作的重点在高效的发现问题,发现重要的问题以及问题能够如实的记录问题。之后的工作就是问题的解决,这里需要责任到人,每一个问题都有专门的负责人。借助代码版本管理工具,可以对代码的修改做回顾。我觉得这里可以把之前缺失的文档和注释进行补充来描述重要的设计。

     

     

    总结

         通过代码审查能够在开发的早些时候发现问题,并规避Lava Flow的出现。代码审查最为人诟病的是占用开发时间,因此良好的准备、安排时间并注重代码审查会议的有效性极为重要。发现问题不是目的,目的是解决问题,代码审查之后的工作落实也要跟踪。建议大家读读George V. Neville-Neil的这篇文章:Kode reviews 101- A review of code review do's and don'ts.

     

    参考资料:

    《反模式:危机中的软件、架构和项目重构》

    Code review is systematic examination (often as peer review) of computer source code intended to find and fix mistakes overlooked in the initial development phase, improving both the overall quality of software  and the developers' skills.

    源文档 <http://en.wikipedia.org/wiki/Code_review>

     

     

  • 目录
    相关文章
    |
    9月前
    |
    存储 Java 关系型数据库
    自信,紧张,焦虑,意外?蚂蚁金服难忘的四面经历,真的太刺激了
    前段时间,蚂蚁金服的热度可不小,互联网圈人人都在讨论它上市的事情,实际上蚂蚁金服上市是迟早的事情。这一下,蚂蚁的员工含金量上升了不少,那我之前蚂蚁提前批这波面经,也是时候分享了。
    |
    架构师 程序员
    程序员如何度过30岁危机?
    程序员如何度过30岁危机?
    |
    存储 Unix 关系型数据库
    2038 年可能是程序员一场危机!
    2038 年可能是程序员面临的一道坎,因为这关乎时间戳的问题。
    2038 年可能是程序员一场危机!
    |
    设计模式 人工智能 架构师
    四十不惑,程序员的中年危机,你经历了吗?
      今年刚好 40 岁,在一家著名外企做到技术专家的位置,在亲戚朋友眼中,俨然已算半个“成功人士”,但内心深处,却无一刻不战战兢兢。我知道,自己就像一个风雨中的高跷人,哪怕一阵风,一个闪失,都会重重跌倒,甚至于再也爬不起来。   我有一个习惯,每年定期更新简历,一则看是否有更好的机会,二则了解市场行情与技术动向,也作为自己下一年努力的方向。   从 30 岁到 40,整整 10 年,年年如斯,这种形式一直有效的鞭策我努力学习和工作。因为我相信只要我保持努力,就会永远站在技术的前沿,就会永远保有强劲竞争力,所谓的“中年危机”永远也不会落在我的头上。
    246 0
    |
    存储 人工智能 监控
    大众、福特畅销车深陷漏洞危机,你的爱车真的安全吗?
    近日,英国消费杂志《Which?》联合网络安全公司Context Information Security发布通告称:大众、福特两大汽车行业巨头计算机系统存在大量安全漏洞,可导致车辆监控、预警系统发出错误信息,误导驾驶员行驶判断,并泄露信息娱乐系统中的相关敏感信息。
    |
    架构师 Java 程序员
    程序员的悲哀:年近40找不到工作,中年危机悄然来临!
    君不见,去互联网公司走一走,你会发现,那些做开发写代码的基本上都是清一色的小伙子,基本上不会见到大龄码农的身影。 有很多程序员笑言:写代码是一个体力活,年纪越大,加班就吃不消了。
    2647 0
    IT人士如何扛起工作生活两座大山
    当我们年轻时,初入职场,意气风发,恨不能倾尽所有精力工作,奋发图强、建功立业。当我们有了家庭,发现我亦凡人,事业家庭想两手抓,却两难兼顾。后来,我们发现工作生活两顾本身就是一个幻想,我们做的,只有尽量使之平衡。
    2303 0

    相关实验场景

    更多