Code Review之前中后
前言
一般我们在做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出某一类问题,也可以考虑通过配置工具来自动扫描出相关问题。
参考
- Code Review Checklist – To Perform Effective Code Reviews. https://www.evoketechnologies.com/blog/code-review-checklist-perform-effective-code-reviews/
Code Review之前中后相关推荐
- 如何在团队中做好Code Review
一.Code Review的好处 想要做好Code Review,必须让参与的工程师充分认识到Code Review的好处 1.互相学习,彼此成就 无论是高手云集的架构师团队,还是以CURD为主的业务 ...
- google code review系列6 - 处理code review中的pushback(完结篇)
接上篇:google code review系列5 - 如何编写code review评论.本篇是code review的完结篇,pushback可以解释成对code review出来的问题的拖延.推 ...
- Google是如何做Code Review的?| CSDN原力计划
作者 | 帅昕 xindoo 编辑 | 屠敏 出品 | CSDN 博客 我和几个小伙伴一起翻译了Google前一段时间放出来的Google's Engineering Practices docume ...
- 万字详文告诉你如何做 Code Review
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|机器学习实验室 前言 作为公司代码委员会 golang 分 ...
- 在腾讯,如何做 Code Review?
作者:cheaterlin,腾讯 PCG 后台开发工程师 前言 作为公司代码委员会 golang 分会的理事,我 review 了很多代码,看了很多别人的 review 评论.发现不少同学 code ...
- Code Review 是一场苦涩但有意思的修行
来自:阿里巴巴中间件 文 | 孤尽 前言 最近 CodeReview(以下简称CR )心态相当的平和,代码是一个讲道理的东西,是就是,否就否.在 CR 时,沟通特别轻松,问题讨论也特别聚焦,因为它 ...
- 如何做好Code Review:思考、方法和实践
最近被要求做一个关于Code Review的讲演.首先要说明的是,我并不是太擅长开展Code Review的活动.做这个完全是因为答应了别人又不好反悔.不过在做准备的过程中还是有一些感想. 关于Cod ...
- 如何做好Code Review
时光匆匆流逝~ 今天是工程能力学习的最后一篇笔记了! 首先给坚持努力的自己呱唧呱唧! 然后搬好前排小板凳 学习啦! 本节课为<如何做好Code Review>,内容包括:为什么要做好Cod ...
- 在腾讯,如何做 Code Review
作为公司代码委员会 golang 分会的理事,我 review 了很多代码,看了很多别人的 review 评论.发现不少同学 code review 与写出好代码的水平有待提高.在这里,想分享一下我的 ...
- Code Review 13 大必知必会,学习了!
作者 | 孤尽 来源 | 阿里巴巴中间件(ID:Aliware_2018) 最近 CodeReview(以下简称CR )心态相当的平和,代码是一个讲道理的东西,是就是,否就否.在 CR 时,沟通特别轻 ...
最新文章
- MyBatis 为什么需要通用 Mapper ?
- 如何用ASP获取真实IP地址_草根编程
- 数据库工具一段时间后打开报错:远程过程调用失败0x800706be
- [转载]关于NETBIOS理清楚概念的文章
- 华为手机怎么强制关机_华为忘记锁屏密码怎么办?多品牌手机通用解锁密码
- 计算机图形学E11——B样条曲线
- 红米性价比之王宣布!网友:干翻友商小米、干翻友商荣耀
- SGU 210 Acdream 1227 Beloved Sons KM
- JBoss 系列三十七:jBPM5示例之 Rule Task
- 正确使用“下划线”一词
- 本地Exchange和exchange online混合部署后OWA统一登录的实现
- bzoj 2962: 序列操作
- 不要迷恋哥,哥只是个传说 - 生活至上,美容至尚!
- python小游戏开题报告范文_课题开题报告范文
- Delphi中类的VMT
- win2003服务器安全设置技术实例(二)
- 例举计算机网络连接的主要对象,《计算机网络技术基础教程》课后习题答案_刘四清版...
- 天津职业技术师范大学计算机研究生,天津职业技术师范大学2021年硕士研究生招生各学院调剂系统开放时间...
- 解决dns被污染的问题
- linux+gunzip解压命令,Linux gunzip解压文件命令详解
热门文章
- 杭州电子科技大学acm--2018
- Editor: 维护一个整数编辑器 HDOJ4699
- Asp .NetCore 支付宝网页授权登录
- 论文阅读:在Stiefel流形上的黎曼优化
- 街头霸王全人物故事背景
- LOGO特训营 第六节 字体设计实操(矩形钢笔造字)
- 阿里文学 php,唐家三少质问阿里文学:骂我可以忍为何辱我亡妻
- 良心!苹果启动 MacBook Pro 电池更换计划
- Win10下载和安装FPGA软件:Quartus Prime( Standard 版本18.1)
- 安卓手机抓包小程序https请求 (该网站安全证书有问题解决办法)