为什么代码评审(code reviews)很重要

剧透警告:如果你喜欢合理的架构决策,而讨厌成为“关键路径”开发者("critical path" developer),你会喜欢上代码评审的。

敏捷团队是自组织的,拥有跨越团队的技能集。这在一定程度上是通过代码评审实现的。代码评审可以帮助开发人员学习代码库,并帮助他们学习新的技术,从而提高他们的技能。

CODING 企业版」作为企业级软件研发管理系统,助力团队敏捷开发转型升级。

那么,到底什么是代码评审(code reviews)呢?

当开发人员完成一项工作时,另一个开发人员会查看代码并考虑如下问题:

  • 在代码中是否存在明显的逻辑错误?
  • 查看需求,是否所有用例都实现了?
  • 新的自动化测试是否足以满足新代码?
  • 是否需要重新编写现有的自动化测试用例来应对代码的变化?
  • 新代码是否符合现有的开发规范?

代码评审应该与团队的现有流程集成。例如,如果一个团队正在使用任务分支工作流,那么在所有代码编写完成并通过自动化测试之后,在代码合并之前,就会启动代码评审。这确保了代码评审人员的时间被用来检查机器遗漏的东西,并防止糟糕的编码决策污染开发主线。

代码评审对于敏捷团队来说有什么作用呢?

无论开发方法如何,每个团队都可以从代码评审中获益,敏捷团队更是能获得巨大的好处。因为团队的工作是分散的,通过代码评审可以做到没有人是唯一知道代码库特定部分的人。简单地说,代码评审有助于促进跨代码库和整个团队的知识共享。

代码评审共享知识

所有敏捷团队的核心都是战无不胜的灵活性:一种将工作从待办事项列表中划掉并由所有团队成员开始执行的能力。因此,团队能够更好地围绕新工作进行展开,没有人是“关键路径”。全栈工程师可以处理前端工作和服务器端工作。
随着代码评审使开发人员接触到新的想法和技术,他们会编写出更好的代码。

通过代码评审可以更好的进行工作评估

还记得评估的那一节吗?评估是一项团队练习,当产品知识在团队中传播时,团队会做出更好的评估。随着新特性被添加到现有代码中,原开发人员可以提供良好的反馈和评估。此外,任何代码评审人员也会综合考虑代码库的复杂性、已知的关注的问题。通过这种方式代码评审员分享了代码库中那个部分的原开发人员的知识。这种实践使得产品知识有多人了解,当大家做最终评估时,通常会使评估更加可靠。

代码评审能让你享受休假

没有人喜欢成为一段代码的唯一联系人。同样地,没有人愿意钻研不是他自己写的关键代码——尤其是在生产环境有紧急情况发生时。代码评审在整个团队中共享知识,这样任何团队成员都可以接管并继续领航这艘大船。(我们喜欢在 Atlassian 进行这样的比喻!)但这里的重点是:没有任何一个开发人员是关键路径,这也意味着团队成员可以根据需要休假。如果你发现自己在产品开发中忙的焦头烂额时,代码评审是一种很好的方式让你获得自由。自由地去享受个假期,或者自由地去看看产品其他领域的事情。

通过代码评审指导新工程师

敏捷开发的一个特点是当新成员加入团队时,经验丰富的工程师会指导新成员。代码评审有助于促进关于代码库的沟通。通常,团队在代码评审期间的代码中隐藏了产品知识。新成员带着新鲜的眼光,从新视角来审查代码库的粗糙之处和历史遗留缺陷的地方。因此,代码评审也有助于确保新见解与现有知识相调和。

专业提示:请记住,代码评审不仅仅是高级团队成员评审初级团队成员的代码。代码评审应该在各个方向上进行。知识是没有界限的!代码评审可以帮助新加入的工程师,但绝不应该仅仅作为一种指导练习。

在“上古”时代,代码作者在开始 Code Review 前,还需要手动做一份变更列表(changelist),来告诉评审者这一次提交做了什么改动。得益于 Git 的诞生,今天的我们可以借助基于 Git 版本控制系统的平台,来更轻松无痛地开展代码审阅,比如「CODING 企业版」,作为企业级软件研发管理系统,其提供的 Code Review 功能简单好用,能大大提高代码审阅效率:

图片

借助 Git 自动实现精细的文件改动,红色代表删减,绿色代表新增,支持行级评论,再也不用在不同工位间来回走动,直接在具体代码下进行交流。

长远来看,代码评审可以节省时间

代码评审确实有点耗时,但是“做评审所花费的时间”不会比“不做评审所浪费的时间”多到哪里去。
只要执行得好,从长远来看,代码评审是可以节省团队时间的。原因有如下三点:

  1. 代码评审可以分担任务负担

很多 Atlassian 的团队,需要对任何代码进行双重评审才能合并到代码库上去。听起来是不是有点额外增加工作负担了?但实际上不会。当代码作者递交评审时,是递交给整个团队的。任何工程师都可以加入评审。这使得任务负担可以被分担,从而可以防止“一项工作耽搁影响总体进度”的情况发生。也可以保证团队代码评审的质量。

  1. 代码评审可以把软件bug扼杀在摇篮里

把代码评审作为提交代码前的必要工序去执行,可以让很多问题(例如熬夜做了不靠谱的架构决策、实习生用了不合理的设计模式)在软件最终发布前就被发现。

  1. 代码评审可以提高工作质量

当一个工程师知道自己的代码会被同事审阅时,他会倾向于付出更多努力来让自己的程序设计变得足够优雅、让自己的代码能顺利通过全部测试。工程师们有了这个上进意识,最终也可以让整个项目变得更加顺畅、有效。

在开发周期里,如果急着得到反馈,那就不要等代码评审给出意见。提前得到反馈,往往会产出更好的代码。因此,无论何时,都不要羞于让别人提意见。这会提高你后续的工作质量,也会提高整个团队的代码评审能力。从而让开发团队进入正循环。

CODING 任务看板
CODING 企业版」作为企业级软件研发管理系统,任务看板功能实现了 Epic \ user stories \ Sprint 等敏捷概念落地。

本文中文翻译自原文:Why code reviews matter (and actually save time!)
编译者:程景天。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容

  • 自序 1. 不是每个人都能以产品经理为业,但在我看来,产品经理是一类人,他的做事思路与方法可以解决很多实际的生活问...
    沉沦2014阅读 4,307评论 1 19
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,050评论 25 707
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,650评论 2 59
  • 【0628金句爱分享】 分享者: 樱子 书 籍: 《终身学习》 001 互惠性原则的重要策略是,真正能影响他人而且...
    樱子_0067阅读 230评论 0 0
  • 喜马拉雅平台《小学问》701『脑内犯罪学』:掀开你的头盖骨,彻底看清楚 “比起肉体伤害,我们更受不了情感伤害。面临...
    卓韵阅读 286评论 0 0