前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Code Review 改进方案

Code Review 改进方案

作者头像
iiopsd
发布2022-12-23 08:55:11
3740
发布2022-12-23 08:55:11
举报
文章被收录于专栏:iiopsd技术专栏iiopsd技术专栏

背景

一个项目的质量通常分为内部质量和外部质量两种,内部质量通常指代码和设计的质量,可以通过应用设计和编程达到最佳实践,也可以通过持续一致的开发和交付流程来提高;外部质量是通过查看和使用软件(例如验收测试)来度量的。从长远的角度看,内部质量不佳最终会影响外部质量,产品会持续不断地冒出新的bug,产生技术债务,而且开发时间会由于技术债务的增加而变长。项目的内部质量很大程度上取决于代码规范和代码审查(Code Review)。

Code Review 的意义

1、提高代码质量

这是Code Review 的初衷,也是Code Review 最直接的价值。Reviewers 根据各自的经验,思考方式,看问题的角度给代码提出各种可能的改进意见,提升系统的可维护性,从而形成更好的代码以及产品质量。

我们知道产品问题越晚提出解决它的代价就越大,参与进去的人、要走的流程都会越来越多。Code Review 可以及早发现潜在缺陷与BUG,降低事故成本,是早期解决问题最有效的途径之一了,在Code Review 中解决掉哪怕一个小问题都可能避免后续一堆的麻烦事。做好事前控制而不是事后弥补

2、统一代码规范

有效的Code Review 最终会在团队范围内建立起统一的质量标准,并且会随着团队成员的互相学习和促进形成更高的标准。参与者会在Code Review 的过程中基于具体问题从不同角度提出改进意见,并最终做出当前最佳的选择并形成共识。随着Code Review 的有效进行,团队成员会有意识地关注代码质量,从而形成越来越高的质量标准。

3、学习交流

其实Code Review 不应该是一个单向的过程,而应该是个双向交流的过程,Reviewer 帮助Author 提出代码改进意见的同时,也是向优秀的Author 学习的过程。我们都知道提高代码能力一个有效的途径是阅读优秀的项目代码,但是阅读项目代码有着不小的难度,这也是大部分人没有去执行的原因,而Review 资深同事的代码,我们在阅读代码的同时能够直接进行有效的沟通,这是一个快速有效的学习途径,尤其对开发经验还不算丰富的开发者而言。这样也可以促进团队内部知识共享,提高团队整体水平。

通过有效的Code Review,Author 和Reviewer 都将获得成长,在Code Review 过程中参与人就具体的问题展开深入的讨论,无论是怎么写出整洁的代码、怎么更好地更全面地思考问题、怎么最佳地解决问题,参与人都可以互相取长补短,互相提高。通过具体代码实现进行的讨论往往是最深入和有效的,Code Review 是开发者提高代码能力最重要的途径之一。这也是一种思路重构的过程,可以帮助更多的人理解系统,类似于组队编程,降低因人员流失的运营成本及风险。

团队当前存在的问题

1、没有统一的代码规范

没有统一的代码规范,每个人的代码可能会风格迥异,为代码的阅读、维护和扩展提高了不小的难度。

2、业务发展迅速

随着业务的迅速发展,大量的需求和优化问题接踵而来,导致开发工期紧凑,完成迭代任务都要加班加点,更加难以抽出时间执行Code Review。

改进方案

1、自我审查

一般情况下Code Review 都是找他人来进行Review,其实负责任的Author 在邀请他人来代码审查前也需要自己简单Review 一遍,即自我审查。在Code Review 上,Author 需要意识到:Reviewer 的时间是宝贵的。因此在正式邀请Reviewer 发起代码审查前,Author 有几项需要注意的点,这些都能提高Code Review 的效率,节省Reviewer 的时间。

自我审查的目的:

  • 发现那些明显的疏忽,如代码调试过程中留下的不必要的痕迹或者不小心注释掉的代码;
  • 提交内容是否正常,在多人协作的情况下合并请求中否带入了不相关的提交内容;
  • Commit Message 尽量遵循团队的规范(参考Angular 规范),尽可能地详细描述它的背景、动机和影响等,也可以备注关联到具体 TAPD单中。

2、使用第三方工具扫描(重点)

使用代码扫描工具可以检测代码规范,并提出问题说明和修改建议。此外,还可以发现一些人工不容易发现的空指针异常和IO 流未正确关闭等致命性bug,杜绝此类“零容忍”的异常在线上发生,从而减少大量人工成本和事故率。代码扫描工具比较主流的有Sonar、FindBugs、Alibaba Java Coding Guidelines、CheckStyle等。

3、流程优化

在这里插入图片描述
在这里插入图片描述

4、Code Review 的一些建议

Author

  • 应当怀着感恩的心去看待坚持认真帮你Reviewer,因为并不是所有Reviewer 都有时间和精力来帮你提高代码质量;
  • 自己对代码的质量负责,不要依赖于Reviewer 去帮你守代码质量的大门;
  • 不要有抵触的情绪,觉得不合理的建议,可以委婉地进行拒绝,或者详细说明自己的看法以及这么做的原因。有时候一个你觉得不合理的建议可能代表一个新的思考角度,无论是哪个,无论最终是Author 还是Reviewer 得到了提高,都应该是好事。

Reviewer

  • 保持一个学习者的心态,既要发现对方代码中的缺陷,也要努力去发现代码中的亮点,发现了好的地方或好的建议,请给予对方以肯定和赞美,这样有助于Review 有效的进行;
  • Code Review 的时候大可不必有什么心里负担,有什么疑惑的、不清楚的地方或者有什么自己的想法,可以直接提出来,有时候一个简单的问题就可能会激起 双方毫不相干的新思路。再者你即使没帮Author 提高代码,让Author 帮你提高思考不也是建不错的事情。

代码扫描工具的选型和实践

技术选型

关于代码扫描工具,比较主流的有Sonar、FindBugs、Alibaba Java Coding Guidelines、CheckStyle。

  • Alibaba Java Coding Guidelines 最大的优点是全中文的提示,对国内开发人员相当友好,并且有阿里巴巴团队持续维护。但是可能无法检测出NPE等潜在bug,所以暂时排除。等后续提供了这方面的支持,会是不错的选择。
  • FindBugs 功能完全够用,可以检查出NPE这样的错误,但是很可惜,IDEA 的FindBugs 插件最多支持到2018.1版本,看来新时代的我们也无福消受了。但是FindBugs 似乎也有独立运行的版本,但是大致看了一下,GUI界面比较复古风了,看了一下官网,最后一次更新是2015年3月了,这种已经停止维护的东西也不敢用。
  • CheckStyle 跟Alibaba Java Coding Guidelines 有点类似,基本也是规范代码格式的,不能找出潜在bug,因此排除
  • Sonar 大致分为IDEA 插件版本的SonarLint 和带有非常友好功能强大GUI 的SonarQube 代码质量平台,完全能满足我们的需求。并且Sonar 提供了面向gitlab、jekins、maven 的无缝对接支持,是当下最活跃热门的代码质量扫描工具。

综上所述,个人建议选择Sonar。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-12-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • Code Review 的意义
    • 1、提高代码质量
      • 2、统一代码规范
        • 3、学习交流
        • 团队当前存在的问题
          • 1、没有统一的代码规范
            • 2、业务发展迅速
            • 改进方案
              • 1、自我审查
                • 2、使用第三方工具扫描(重点)
                  • 3、流程优化
                    • 4、Code Review 的一些建议
                    • 代码扫描工具的选型和实践
                      • 技术选型
                      相关产品与服务
                      腾讯云代码分析
                      腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档