在代码的编写中有一个很重要的环节,经常会被忽视,那就是 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 吗?相关推荐

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

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

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

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

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

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

  4. 在腾讯,如何做 Code Review

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

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

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

  6. Google是如何做Code Review的

    我和几个小伙伴一起翻译了Google前一段时间放出来的Google's Engineering Practices documentation,翻译后的github仓库https://github.c ...

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

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

  8. 在腾讯,我们如何做 Code Review

      推荐关注 扫码关注"中生代技术",选择"星标"公众号 重磅干货,第一时间送达!责编:架构君 | 作者:cheaterlin,腾讯 PCG 后台开发工程师 | ...

  9. 如何做Code Review——读后感

    文章链接:万字详文告诉你如何做 Code Review! 最近阅读到这篇文章,觉得不错,就仔细阅读理解并做了笔记 为什么要做Code Review! riview过程中做到落地沟通,在实际问题中产生思 ...

最新文章

  1. sql text转image_[转]故障分析 | 记一次 MySQL 主从双写导致的数据丢失问题
  2. HDFS只支持文件append操作, 而依赖HDFS的HBase如何完成增删改查功能
  3. 取景框图片 小程序_敲敲级简单的鉴别H图片的小程序
  4. 人脸检测发展:从VJ到深度学习(下)
  5. java.lang.Math
  6. 利用计算机进行信息加工正确的说法,信息技术习题1(1-50)
  7. Netflix如何节省92%视频编码成本?
  8. Java编程经典10道_Java经典编程题50道之十二
  9. 华瑞网研(苏州)2014-11部分笔试题(社招)
  10. 短信语音验证码发展的必然趋势
  11. flask nginx+uwsgi超时设置
  12. tinymce富文本编辑器(vue)
  13. taskmgr多开补丁
  14. 菜鸟保税仓成全球商家进中国首选 秒级通关领先全球
  15. 微信好友排行榜 最简教程 二
  16. 数学建模优化和仿真模拟的区别001
  17. Unity UI框架详细理解--场景管理
  18. 音乐推荐-3张新碟《雪狼》+《馨馨醉》+《光》
  19. 谷歌云指南_Google材料设计指南的10个重要要点
  20. Linux 追踪技术 ftrace 简介(一)

热门文章

  1. matlab光顺拐点,基于MATLAB的最大误差双圆弧逼近曲线的算法及实现.pdf
  2. 关于初始化C++类成员
  3. 腾讯的一笔画游戏--巧妙解法
  4. 【.NET特供-第三季】ASP.NET MVC系列:传统WebForm站点和MVC站点执行机制对照
  5. CentOS+lighttpd+php+mysql (fastcgi)环境的搭建(转)
  6. WinXP中鲜为人知的28项隐藏功能
  7. 短语密码_使用密码短语以提高安全性
  8. apple默认备份位置_如何将Apple Maps默认设置为步行路线
  9. 从Windows XP升级? 这是您需要了解的Windows 7
  10. 100亿人口会挨饿吗?人工智能迎击全球粮食问题