作者|Gaimida高效地进行CodeReview一直是我们想做的事情,如何保持高效的Reviews也是我们日常开发中急需解决的问题。疫情爆发前,大部分团队都是线下协同工作。每个人都会聚在一起进行CodeReview,将讨论的反馈记录在便利贴上并张贴在白板上。而当远程和在线的同事越来越多时,我们选择将CodeReview的反馈记录在Trello等电子看板上。今天我们总结了一个更高效的CodeReview解决方案,并带来了一个更好用的工具。让我与您分享我们团队的CodeReview实践的历史。CodeReview的好处长期以来,人们都说CodeReview是敏捷开发的重要组成部分。实践CodeReview有很多好处,那么CodeReview有哪些好处呢?到底是什么魔力让我们如此执着地每天做代码?审查?我们仔细考虑了CodeReview的好处,认为以下几点在整个敏捷开发过程中起着至关重要的作用。互相学习,分享知识我们不能保证项目中的每个人都有相同的知识储备,同样的问题,不同的人有不同的解决方案。通过CodeReview,我们可以快速而专注地将我们的知识传授给他人。其他人也可以为我们提供代码上下文、知识和更好的解决方案,让我们做出更好的实现。CodeReview使业务上下文能够在团队之间共享。在日常工作中,开发人员只是熟悉自己负责的业务。通过CodeReview,可以快速了解其他业务脉络,更好的理解业务知识,让每个同学对系统有更全面的了解。统一风格,提高代码质量团队一般都有统一的代码规范。有些规范可以借助工具扫描来统一,不能用工具扫描的就必须通过CodeReview来统一。莎士比亚说:“一千个人眼中有一千个哈姆雷特”。对于同一段代码,多种实现可能是可行的。如果没有统一的风格,不方便代码的后续维护。通过CodeReview,我们可以在团队内部达成共识,形成统一的代码规范,为后续的开发提供标准,让代码看起来像是同一个人写的。尽早暴露问题,降低修复成本在代码开发过程中,我们很容易陷入自己规划好的happypath,反复验证也找不到问题所在。通过CodeReview,我们可以用别人的视角来review自己的代码。是因为复制的时候忘记修改变量名,还是忘记测试异常情况,还是理解错了业务意义等等,写代码和review的时间间隔越短,解决问题的成本越低。与向左测试类似,CodeReview也可以将问题向左移动,以便尽快暴露和修复问题。我们团队的CodeReview实践经验讲了这么多CodeReview的好处,那么如何实践CodeReview呢?下面分享一下自己团队的CodeReview经验,和大家一起思考CodeReview的最佳实践:团队最初采用的CodeReview方式是每个开发人员单独解释自己的代码。这种方式的好处是可以集中解释同一个功能的代码。但是执行一段时间后发现超时严重。主要原因有:打码的节奏不好控制。有人说话慢,导致严重超时。远程办公,在不同口译员之间切换的成本很高。您可能会遇到屏幕共享、声音等设备问题。这会导致以下问题:每天只能审查2或3个人的代码。有些开发者不够积极,时间长了TAReview的代码就会有疏漏。为了解决以上问题,我们把codereview改成下面的形式:每天一个版主带领团队CodeReview选取当天所有的提交记录,review版主一起带动CodeReview,讲解复杂的代码简要说明,提交者解释说版主使用工具来记录CodeReview的问题。这样一来,版主把控了节奏,而且没有切换成本,大大加快了CodeReview的速度。而且大家的投稿每天都可以审核。此外,配合CodeReview问题记录工具,效率也得到了极大的提升。我们相信通过主持人驱动的方法可以更有效地进行代码审查,因此我们采用它作为我们团队的代码审查最佳实践。但是在CodeReview中手动记录问题的过程非常繁琐:找到问题->切换Trello->手动创建卡片->手动记录问题代码所在位置。期间,我们开发了基于JetBrains平台(如IntellijIDEA、WebStorm)的CodeReview插件(在IDE的插件市场搜索ThoughtworksCodeReviewTools即可体验)。我们稍后会详细介绍这个插件。ThoughtworksCodeReviewTools介绍这款CodeReview工具可以帮助我们:创建一个CodeReview反馈卡并指定所有者卡会自动记录代码位置添加反馈卡的类型(标签)增加卡的截止日期支持JetBrains下的所有IDE支持问题分类,方便使用Trelloboarddashboard统计安装配置(1)准备电子看板插件,需要配合trello(在线看板管理工具)使用。我们需要先注册trello并创建一个新的CodeReviewKanban。(2)安装插件在IDEA插件市场搜索Thoughtworks代码审查工具并安装Github:https://github.com/MTWGA/thoughtworks-code-review-tools下载页面(3)配置插件-in进入首选项->TWCodeReviewTools菜单配置插件信息TrelloToken申请地址:https://trello.com/app-key配置页面TrelloBoard信息可以从TrelloBoard地址栏找到,如下图,可以直接点击“TestConnection”进行测试或者直接点击右下角的Apply保存配置记录反馈在IDE中选择相应的代码,然后使用快捷键command+option+我调出“代码审查反馈”提示框。先输入或选择人名,按Tab键切换输入框,依次输入类型和反馈。最后回车提交。CodereviewFeedback页面提交成功后,会有相应的提交成功的提示信息,如下图,我们也可以在Trello上查看信息,如下图:TrelloKanbanimageViewCodeReviewstatus点击标题左侧Trello的CodeReviewKanban“看板”,切换视图到仪表盘查看统计信息。具体操作如下图所示:根据标签选择转换视图,查看codereview分类信息。至此,CodeReview工具的配置和使用就完成了。CodeReview插件可以帮助我们快速记录CodeReview反馈信息(代码位置、反馈类型、截止日期、参与人员)。这些信息可以帮助开发者准确找到需要优化的代码位置和优化建议,让开发者更快速、更准确地优化代码。经过一段时间的CodeReview,逐渐积累了一定的数据。这时候我们就可以用统计工具来分析数据了。比如按照问题的种类进行统计,对于出现频率高的问题进行分类,可以进行有针对性的培训,提高团队成员的技能。训练完成后,我们可以根据新一轮的统计结果分析训练效果,观察球队是否确实得到了提升,从而形成一个闭环。虽然总结CodeReview的好处被广泛认可,但是要做好CodeReview并不是一件容易的事。首先,团队需要就进行CodeReview达成共识,然后根据自己团队的特点,采取匹配的实践方式。至于工具,可以试试文中提到的CodeReview插件和电子看板。在提高自动化程度的同时,积累CodeReview数据,指导团队有针对性地提升技能。如果您在插件使用过程中有任何问题或建议,请联系插件开发团队:李辉(hui.li@thoughtworks.com)彭杰(jie.peng@thoughtworks.com)GeMaida(maida.ge@thoughtworks.com)李一鸣(yiming.li@thoughtworks.com)李强(qiangli@thoughtworks.com)原文链接:团队的CodeReview实践(qq.com)
