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>

     

     

  • 目录
    相关文章
    |
    2天前
    |
    人工智能 自然语言处理 算法
    “幽灵职位”泛滥:招聘广告背后的真相与求职者的困境
    “幽灵职位”泛滥:招聘广告背后的真相与求职者的困境
    |
    7月前
    |
    黑灰产治理
    有这个迹象,公司就要凉了
    如今,时令已至寒冬,氛围也是如此。连久未露面的马云校长都出来贡献金句了“所有伟大的公司,都在冬天里诞生…坚信阿里会变”。另一电商巨头京东的扛把子强哥也发话了“京东必须改变,否则没有出路…无论如何我不会躺平”。寥寥数语,把大佬们心中的焦虑展现的淋漓尽致。
    205 1
    |
    7月前
    |
    存储 Java 关系型数据库
    自信,紧张,焦虑,意外?蚂蚁金服难忘的四面经历,真的太刺激了
    前段时间,蚂蚁金服的热度可不小,互联网圈人人都在讨论它上市的事情,实际上蚂蚁金服上市是迟早的事情。这一下,蚂蚁的员工含金量上升了不少,那我之前蚂蚁提前批这波面经,也是时候分享了。
    |
    程序员 虚拟化 云计算
    优秀云大使之中年危机临近的开发者如何寻求出路
    中年危机临近,事业第二春即将开启
    7309 3
    |
    算法 大数据
    算法工程师的生存危机,字字到位
    日历翻到了新的2019,AI 热潮还在继续。但许多一线算法工程师,已经能明显嗅到危机的味道: 一方面是来自人的竞争,大量毕业生和培训生涌入这个行业,人才缺口被迅速填满甚至饱和; 另一方面是来自机器的竞争,部分算法工程师正在逐渐被他们每天研究的算法所代替。
    2621 0
    |
    架构师 Java 程序员
    程序员的悲哀:年近40找不到工作,中年危机悄然来临!
    君不见,去互联网公司走一走,你会发现,那些做开发写代码的基本上都是清一色的小伙子,基本上不会见到大龄码农的身影。 有很多程序员笑言:写代码是一个体力活,年纪越大,加班就吃不消了。
    2627 0
    你的不自律正在慢慢毁掉你
    01 在知乎上看过一个问题:“你见过最不求上进的人是什么样子?” 点赞数第一的回答是: “我见过的最不求上进的人,他们为现状焦虑,又没有毅力践行决心去改变自己。 三分钟热度,时常憎恶自己的不争气,坚持最多的事情就是坚持不下去。
    1336 0

    相关实验场景

    更多