前言

一般我们在做Code Review时希望实现以下几个目的:

  • 传播好的编码实践
  • 让大家对所做软件更了解
  • 避免重复采坑
  • 发现方案或代码中功能性和非功能性问题,以及未考虑到的场景

很多团队在做Code Review时只是走了个形式,而没有实现真正目的。这篇博客会给大家介绍Code Review的前中后分别各做什么,从而使得Code Review形成一个闭环过程。

一般的代码合入流程

目前大多数公司都使用git来管理代码,一般开发会通过gerrit或pull request(记为PR)来合入代码,因此一个一般的代码提交流程如下:

Code Review之前

在做Code Review之前,至少要完成:

  • 开发需要根据需求说明书或验收条件或问题复现方式来完成自检
  • 代码通过扫描
  • 单元测试通过

我们知道对于修改量比较大的代码,Code Review还是比较占用时间的,因此Code Review不会检查诸如代码格式、if条件是否需要合并、基本功能等这些基本的问题。这些问题需要在Code Review之前由开发、自动化工具和单元测试来保证,比如Lint、Coverity、Findbug、PMD能够帮助我们发现很多潜在的bug、兼容性问题和代码规范问题,我们应该充分利用这些工具。

Code Review之中

开始Code Review时,开发人员需要确认Reviewers是否了解代码针对的需求或问题,如果不了解可以给Reviewers简单介绍一下,然后按照真实业务的流程来介绍代码,重点介绍可能存在问题的地方,Reviewers在听的时候可以随时提问,确认是问题或需要再确认的需要及时在代码中标注出来。Reviews可以根据如下清单来Review代码:

  • 代码是否很容易理解
  • 代码中是否有重复的地方
  • 代码是否容易测试和调试
  • 代码是否考虑到并发
  • 代码是否考虑到了非功能性需求,如性能、内存
  • 代码是否符合现有的软件架构
  • 代码是否符合单一职责原则(SRP)
  • 代码是否符合开闭原则(OCP)
  • 代码是否符合依赖倒置原则(OIP)

虽然具体清单项可能不同项目会有不同,但上述这些Review项一般是必须的。

Code Review之后

代码经过Code Review之后,开发人员需要针对Review过程中提出的问题进行分析和修改,修改完成后再提交新的代码,再走一遍上述流程。一般经过一次Review的代码在第二次Review时会特别快。

在这里有一点往往是团队忽略的,如果在Review时经常发现一些同类型的问题,这时就该考虑是不是团队内部对相关知识缺乏了解,是不是应该对团队进行一次相关的培训。

另外,如果我们经常Review出某一类问题,也可以考虑通过配置工具来自动扫描出相关问题。

参考

  1. Code Review Checklist – To Perform Effective Code Reviews. https://www.evoketechnologies.com/blog/code-review-checklist-perform-effective-code-reviews/

Code Review之前中后相关推荐

  1. 如何在团队中做好Code Review

    一.Code Review的好处 想要做好Code Review,必须让参与的工程师充分认识到Code Review的好处 1.互相学习,彼此成就 无论是高手云集的架构师团队,还是以CURD为主的业务 ...

  2. google code review系列6 - 处理code review中的pushback(完结篇​)

    接上篇:google code review系列5 - 如何编写code review评论.本篇是code review的完结篇,pushback可以解释成对code review出来的问题的拖延.推 ...

  3. Google是如何做Code Review的?| CSDN原力计划

    作者 | 帅昕 xindoo 编辑 | 屠敏 出品 | CSDN 博客 我和几个小伙伴一起翻译了Google前一段时间放出来的Google's Engineering Practices docume ...

  4. 万字详文告诉你如何做 Code Review

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|机器学习实验室 前言 作为公司代码委员会 golang 分 ...

  5. 在腾讯,如何做 Code Review?

    作者:cheaterlin,腾讯 PCG 后台开发工程师 前言 作为公司代码委员会 golang 分会的理事,我 review 了很多代码,看了很多别人的 review 评论.发现不少同学 code ...

  6. Code Review 是一场苦涩但有意思的修行

    来自:阿里巴巴中间件 文  |  孤尽 前言 最近 CodeReview(以下简称CR )心态相当的平和,代码是一个讲道理的东西,是就是,否就否.在 CR 时,沟通特别轻松,问题讨论也特别聚焦,因为它 ...

  7. 如何做好Code Review:思考、方法和实践

    最近被要求做一个关于Code Review的讲演.首先要说明的是,我并不是太擅长开展Code Review的活动.做这个完全是因为答应了别人又不好反悔.不过在做准备的过程中还是有一些感想. 关于Cod ...

  8. 如何做好Code Review

    时光匆匆流逝~ 今天是工程能力学习的最后一篇笔记了! 首先给坚持努力的自己呱唧呱唧! 然后搬好前排小板凳 学习啦! 本节课为<如何做好Code Review>,内容包括:为什么要做好Cod ...

  9. 在腾讯,如何做 Code Review

    作为公司代码委员会 golang 分会的理事,我 review 了很多代码,看了很多别人的 review 评论.发现不少同学 code review 与写出好代码的水平有待提高.在这里,想分享一下我的 ...

  10. Code Review 13 大必知必会,学习了!

    作者 | 孤尽 来源 | 阿里巴巴中间件(ID:Aliware_2018) 最近 CodeReview(以下简称CR )心态相当的平和,代码是一个讲道理的东西,是就是,否就否.在 CR 时,沟通特别轻 ...

最新文章

  1. MyBatis 为什么需要通用 Mapper ?
  2. 如何用ASP获取真实IP地址_草根编程
  3. 数据库工具一段时间后打开报错:远程过程调用失败0x800706be
  4. [转载]关于NETBIOS理清楚概念的文章
  5. 华为手机怎么强制关机_华为忘记锁屏密码怎么办?多品牌手机通用解锁密码
  6. 计算机图形学E11——B样条曲线
  7. 红米性价比之王宣布!网友:干翻友商小米、干翻友商荣耀
  8. SGU 210 Acdream 1227 Beloved Sons KM
  9. JBoss 系列三十七:jBPM5示例之 Rule Task
  10. 正确使用“下划线”一词
  11. 本地Exchange和exchange online混合部署后OWA统一登录的实现
  12. bzoj 2962: 序列操作
  13. 不要迷恋哥,哥只是个传说 - 生活至上,美容至尚!
  14. python小游戏开题报告范文_课题开题报告范文
  15. Delphi中类的VMT
  16. win2003服务器安全设置技术实例(二)
  17. 例举计算机网络连接的主要对象,《计算机网络技术基础教程》课后习题答案_刘四清版...
  18. 天津职业技术师范大学计算机研究生,天津职业技术师范大学2021年硕士研究生招生各学院调剂系统开放时间...
  19. 解决dns被污染的问题
  20. linux+gunzip解压命令,Linux gunzip解压文件命令详解

热门文章

  1. 杭州电子科技大学acm--2018
  2. Editor: 维护一个整数编辑器 HDOJ4699
  3. Asp .NetCore 支付宝网页授权登录
  4. 论文阅读:在Stiefel流形上的黎曼优化
  5. 街头霸王全人物故事背景
  6. LOGO特训营 第六节 字体设计实操(矩形钢笔造字)
  7. 阿里文学 php,唐家三少质问阿里文学:骂我可以忍为何辱我亡妻
  8. 良心!苹果启动 MacBook Pro 电池更换计划
  9. Win10下载和安装FPGA软件:Quartus Prime( Standard 版本18.1)
  10. 安卓手机抓包小程序https请求 (该网站安全证书有问题解决办法)