你有做 Code Review 吗?
在代码的编写中有一个很重要的环节,经常会被忽视,那就是 Code Review ,据说在 Facebook、Google 这种互联网大公司,要求每一个提交都必须通过审查,对于每个工程师来说 Code Review 是一项十分重要的工作,甚至比写代码本身更重要。
这里所说的 Code Review 是指人工的方式进行代码的检查,通常会给我们带来下面的一些好处:
编码风格可以保持一致,目前团队中虽然有编码规范的指引,但在代码抽查时,还是会看到很多「个性」的代码;
将明显问题扼杀在摇篮里,有时候存在设计上的一些错误,在后期要调整起来非常麻烦,改动大容易引发新的问题,还需要修复历史数据等;
新人能够快速融入团队,知道团队的编码风格,能学习到一些优秀代码的写法,也能知道哪些是禁区,不能触碰;
团队成员之间能够互相学习,构建良好的团队氛围。
不做 Code Review 也能完成功能的实现,只不过慢慢会带来下面的问题:
从每天写功能慢慢变成每天写 Bug;
代码的坏味道越来越浓,代码变得难以维护;
修改一行代码,测试没有覆盖到,往往就会带来很严重的后果;
可能过一段时间,就需要进行大规模的重构;
新人的技能得不到快速提升。
其实我们都知道 Code Review 的重要性,敏捷开发中的结对编程就包含了 Code Review ,但为什么却难以执行呢,我认为有下面一些原因:
项目急,时间紧,完成功能都需要加班加点,哪还有时间做 Code Review;
对 Code Review 的认知不足,不够重视;
没有相关的流程和制度进行约束,很难坚持执行下去。
我们团队的代码采用私有 GitLab 服务器,自然也使用了 GitLab 中的 MR 模式,不清楚 MR 是什么的同学可以看看我之前写的《在团队中使用 GtiLab 中的 Merge Request 工作模式》。曾经有一个美好的设想就是利用 Merge Request ,让每个人都能参与进来,在 GitLab 中进行代码的讨论,但非常遗憾,最终没能执行起来。
Code Review 的工具和方式方法非常多,我们如果能挑一两种方式,落地执行下去,就是非常好的一个开始。
上面说到 Merge Request 在团队中没有推行起来,但我个人还是在经常使用,我是代码合并的管理员之一,当合并代码时,我会重点关注两个方面:
1、核心代码的改动
当前功能的提交是否有必要修改到这些地方,理由是什么?
这些代码的改动有没有可能引发一些严重问题?
2、MR 是谁提交的
如果是资深开发人员提交的代码,Review 的粒度会比较粗;
如果是新人提交的代码,则会重点关注,包括规范以及逻辑的合理性。
除此之外,我们领导推荐的一种做法,目前在团队中一直在执行,就是写代码前先写空方法。将任何的需求转化成代码,中间的思考过程是复杂的,需要考虑很多东西:性能、扩展、是否优雅等,反倒是最终的编码实现相对是简单的。
而写空方法的过程就是思考的过程,涉及到了类的创建、抽象、组合;方法的职责,事先没有思考清楚,是写不出来的。
快速出一版空方法后,再进行沟通和讨论,找出其中有遗漏和有问题的点,进行修改,最终的版本在大方向上基本是没什么问题的。
对于 Code Review ,我自己也还在不断地探索和实践,找到适合团队的方法,执行下去,然后再持续进行改进和完善。
你有做 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
作为公司代码委员会 golang 分会的理事,我 review 了很多代码,看了很多别人的 review 评论.发现不少同学 code review 与写出好代码的水平有待提高.在这里,想分享一下我的 ...
- Google 是如何做 Code Review 的?| 原力计划
作者 | 帅昕 xindoo 责编 | 屠敏 出品 | CSDN 博客 我和几个小伙伴一起翻译了Google前一段时间放出来的Google's Engineering Practices docume ...
- Google是如何做Code Review的
我和几个小伙伴一起翻译了Google前一段时间放出来的Google's Engineering Practices documentation,翻译后的github仓库https://github.c ...
- 万字详文告诉你如何做 Code Review!
作者:cheaterlin,腾讯PCG后台开发工程师 来源:腾讯技术工程 前言 作为公司代码委员会 golang 分会的理事,我 review 了很多代码,看了很多别人的 review 评论.发现不少 ...
- 在腾讯,我们如何做 Code Review
推荐关注 扫码关注"中生代技术",选择"星标"公众号 重磅干货,第一时间送达!责编:架构君 | 作者:cheaterlin,腾讯 PCG 后台开发工程师 | ...
- 如何做Code Review——读后感
文章链接:万字详文告诉你如何做 Code Review! 最近阅读到这篇文章,觉得不错,就仔细阅读理解并做了笔记 为什么要做Code Review! riview过程中做到落地沟通,在实际问题中产生思 ...
最新文章
- sql text转image_[转]故障分析 | 记一次 MySQL 主从双写导致的数据丢失问题
- HDFS只支持文件append操作, 而依赖HDFS的HBase如何完成增删改查功能
- 取景框图片 小程序_敲敲级简单的鉴别H图片的小程序
- 人脸检测发展:从VJ到深度学习(下)
- java.lang.Math
- 利用计算机进行信息加工正确的说法,信息技术习题1(1-50)
- Netflix如何节省92%视频编码成本?
- Java编程经典10道_Java经典编程题50道之十二
- 华瑞网研(苏州)2014-11部分笔试题(社招)
- 短信语音验证码发展的必然趋势
- flask nginx+uwsgi超时设置
- tinymce富文本编辑器(vue)
- taskmgr多开补丁
- 菜鸟保税仓成全球商家进中国首选 秒级通关领先全球
- 微信好友排行榜 最简教程 二
- 数学建模优化和仿真模拟的区别001
- Unity UI框架详细理解--场景管理
- 音乐推荐-3张新碟《雪狼》+《馨馨醉》+《光》
- 谷歌云指南_Google材料设计指南的10个重要要点
- Linux 追踪技术 ftrace 简介(一)
热门文章
- matlab光顺拐点,基于MATLAB的最大误差双圆弧逼近曲线的算法及实现.pdf
- 关于初始化C++类成员
- 腾讯的一笔画游戏--巧妙解法
- 【.NET特供-第三季】ASP.NET MVC系列:传统WebForm站点和MVC站点执行机制对照
- CentOS+lighttpd+php+mysql (fastcgi)环境的搭建(转)
- WinXP中鲜为人知的28项隐藏功能
- 短语密码_使用密码短语以提高安全性
- apple默认备份位置_如何将Apple Maps默认设置为步行路线
- 从Windows XP升级? 这是您需要了解的Windows 7
- 100亿人口会挨饿吗?人工智能迎击全球粮食问题