V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
CodingNET
V2EX  ›  iCode

Code Review 代码审阅初窥门径

  •  
  •   CodingNET · 2018-07-20 17:25:50 +08:00 · 13487 次点击
    这是一个创建于 2330 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景

    今时今日,软件工程的开发工作早已不是一个人的单打独斗,而是一个团队的相互配合、共同前进。有位作家写过一句很流行的话,叫“一个人要像一支队伍”,而作为一个组织进行高效率的脑力生产劳动时,更需要追求的反而是“一支队伍要像一个人”,这个人走路不会同手同脚,四肢要协调,前进方向只有一个。 那怎么实现这个目标呢? Code Review,即代码评审,是必不可少的一个环节。

    什么是 Code Review (代码评审)?

    当一个程序员写完了一段代码后,由另外的程序员花时间来浏览阅读这些代码,并进行审阅。

    Code Review 是以轮转的方式进行的,所以参与代码审阅的人有两种,分别是作者( author )以及评审者( reviewer )。当作者将写好的代码提交给评审者后,评审者对这次变动作出反馈,作者根据反馈修改代码,并重新提交,经过一次或多次往返后,评审者**同意( approve )**这次代码变动,允许代码进入仓库保存,Code Review 就完成了。

    flowchart

    制图来源

    此时评审者要考虑的问题包括:

    • [ ] 总体逻辑上的实效效果
    • [ ] 检查是否满足了所有需求
    • [ ] 之前的自动化测试需要额外做修改才能跑通吗
    • [ ] 与其他模块之间有没有程序检查不出来的冲突

    由此可见,Code Review 基本上就相当于老师在给学生一字一句地批改作业,学生订正后又交给老师再次检查,如此往复。因此,为了节约精力,以便代码审阅工作可持续性开展,评审者可以交给程序去处理的问题包括:

    • [ ] 发现代码中的 bug 与错误
    • [ ] 代码风格和编码标准的统一

    Code Review 的好处

    热力学三大基本定律中有一条叫“熵增原理”,即:一个孤立系统总朝着混乱无序的方向发展。软件工程也是如此,如果没有人把控输入的代码,只管一个劲地堆砌,久而久之,这坨代码也就失去秩序,成一团乱麻了,人见人嫌。所以在工程的一开始就引入代码审阅,可以非常有效地提高代码质量。

    更重要的是,Code Review 是一个双向的过程,双方借助针对具体代码的交流,得以了解对方的想法,进行互相探讨,这是帮助团队中的成员成长,赋予团队自我管理、良性发展的能力。归根结底,人才是首要的生产力。

    高效进行 Code Review 的方法

    版本对比 / 文件改动

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

    图片

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

    资源关联

    代码不是孤立的一串文本字符串,而是实现目标的其中一项资源,那么必然需要与其他资源相互组合才能掌握全局。落实到代码审阅中也是如此,放到具体的上下文环境里方能见微知著: 图片

    「#」关联任务、文件等资源,「 @ 」通知相关同事,实现垂直关联场景下的精细调控。

    多人协同审阅

    图片

    不同的人有不同的思考方式与见解,对同一段代码能从不同的角度出发考虑。尽可能的让不同的人 reivew 你的代码,不仅会有更多的人日后有能力维护你的代码,也是一个增加团队凝聚力的好方法。

    学会享受 Code Review

    不用担心收到批评面子过不去,也不用一枚追求“同意+1 ”,代码审阅是一个团队生机勃勃的象征,这里面的每一个人都在相互鼓励、相互交流以及相互进步,参与其中,与团队共同成长吧。

    2 条回复    2018-08-04 21:26:38 +08:00
    mingyun
        1
    mingyun  
       2018-07-21 09:12:38 +08:00
    我经历的公司都木有 code review 的
    youngxhui
        2
    youngxhui  
       2018-08-04 21:26:38 +08:00 via Android
    在 github 上部署自动构建,自动测试,顺便 code review 也做了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4088 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 01:00 · PVG 09:00 · LAX 17:00 · JFK 20:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.