你有做 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 ,我自己也还在不断地探索和实践,找到适合团队的方法,执行下去,然后再持续进行改进和完善。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/301597.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PhotoShop CS5制作残旧的印章效果

编者按:不少网友喜欢个性印章效果,因此常常搜索个性印章在线制作。其实,Photoshop就可以完成个性印章制作。事实上,使用 Photoshop制作残旧的印章效果文字有多种方法,例如可以使用云彩滤镜。本文作者介绍了另一种实现方…

限时秒杀┃秒杀90%的玩具,让孩子爱上科学的彩虹实验2来了!

▲数据汪特别推荐点击上图进入玩酷屋之前小木有推荐过“彩虹实验”,这款是可以让孩子在探索中能够独立思考,主动地构建知识库,培养创造力。(传送门)让孩子们在家开展科学游戏,既能提升动手能力,…

感想四

2019独角兽企业重金招聘Python工程师标准>>> 随着年龄的增长,对人对事物的认知就越真,包括知识也是如此。 很多年前,在软件开发领域中发生了一个有趣的转变,软件变成了系统中最为昂贵、最为重要的部分。从…

.NET Worker Service 作为 Windows 服务运行及优雅退出改进

上一篇文章我们了解了如何为 Worker Service 添加 Serilog 日志记录,今天我接着介绍一下如何将 Worker Service 作为 Windows 服务运行。我曾经在前面一篇文章的总结中提到过可以使用 sc.exe 实用工具将 Worker Service 安装为 Windows 服务运行,本文中我…

私有云存储 linux,搭建nextcloud私有云存储网盘

本文将要为您介绍的是搭建nextcloud私有云存储网盘,具体完成步骤:简介:搭建个人云存储一般会想到ownCloud,堪称是自建云存储服务的经典。而Nextcloud是ownCloud原开发团队打造的号称是“下一代”存储.真正试用过后就由衷地赞同这个Nextcloud:…

我报了个税,隐私就被扒光了?

全世界只有3.14 % 的人关注了数据与算法之美1月14日,据外媒报道,美国参议院金融委员会正在向美国财政部和国税局施压,要求他们采取网络安全措施。相关数据显示,2015年美国约有700,000名纳税人身份信息遭到泄露,为了解决…

C# 外接(网口)双摄像头视频获取

【注意事项】------------------------------------1. 更新设备网络SDK时,SDK开发包【库文件】里的HCNetSDK.dll、HCCore.dll、PlayCtrl.dll、SuperRender.dll、AudioRender.dll、HCNetSDKCom文件夹、ssleay32.dll、libeay32.dll、hlog.dll、hpr.dll、zlib1.dll、lo…

Visual Studio 2022 Preview 1 和.NET 6 Preview 5 正式发布

具有里程碑意义的Visual Studio 2022 Preview 1正式发布,重点是64位,而没有增加新功能,并且同时也发布了.NET 6 Preview 5。https://devblogs.microsoft.com/visualstudio/visual-studio-2022-preview-1-now-available/https://devblogs.micr…

每日一笑 | 你知道你爸妈当年是怎么在一起的吗?

全世界只有3.14 % 的人关注了数据与算法之美(图片来源于网络,侵权删)

每日一笑 | 你知道程序媛最“大”的烦恼是什么吗?

全世界只有3.14 % 的人关注了数据与算法之美(图片来源于网络,侵权删)

什么?他居然想在DLL中放毒!

dotnet/runtime有一个issue[1]讨论了如何使用ModuleInitializer投放恶意代码,但是微软的开发经理表示不背这个锅! 什么是ModuleInitializer?ModuleInitializerAttribute[2]是在.NET5.0中新增加的API。它的作用是应用于编译中的任意数量的静态…

为什么说人工智能是一个大谎言

全世界只有3.14 % 的人关注了数据与算法之美人工智能是一个很大的谎言。或者往轻了说,它是一个混淆概念。往重了说,是用来欺骗大众的流行语,并且流行度非常高。其实真正的内涵是“机器学习”。所以,真正强大的,每个人都…

NET问答: ThreadStatic 和 ThreadLocalT 哪一个更好 ?

咨询区 user2341923&#xff1a;[ThreadStatic] 被设计成特性&#xff0c; ThreadLocal<T> 被设计成泛型&#xff0c;为什么会有这两种设计方案呢 &#xff1f;谁能告诉我他们的优缺点各是什么&#xff1f;是不是泛型的方式更好一点&#xff1f;回答区 Sanjeev&#xff1…

指针变量的定义与引用

2019独角兽企业重金招聘Python工程师标准>>> void main() { int a 5,b3; int *p; p &a; b*P5; printf("%d\n", b); *p 4; printf("%d,%d\n",a,*p); } 输出结果&#xff1a;10 4 4 之前在学校的时候就没怎么搞懂&#xff0c; 现在…

Vim的配置

2019独角兽企业重金招聘Python工程师标准>>> set nocompatible source $VIMRUNTIME/vimrc_example.vim source $VIMRUNTIME/mswin.vim behave mswin set guifontCourier_New:h12cANSI colorscheme torte set nobackup set ts4 set lines33 columns100 set diffexprM…

WPF 命中测试HitTest

获取不规则图片的点击事件&#xff0c;如果一个Canvas中&#xff0c;有很多图形&#xff0c;比如下图&#xff1a;矩形&#xff0c;菱形等。如果每个图形都加一个点击事件&#xff0c;想要一个通用的方法&#xff0c;获取鼠标点击在了哪个图形上&#xff0c;这里可以使用Visual…

不足百元的乐高式积木,玩转数理机械原理

▲数据汪特别推荐点击上图进入玩酷屋作为一名资深积木达人&#xff0c;小木我可是大大小小的积木阅览无数&#xff0c;当然乐高也不会放过&#xff0c;虽然“钱包君”已经是路人了。&#xff08;每月的工资用来买乐高~&#xff09;之前给大家推荐了一款STEM积木&#xff0c;小小…

WPF 密码框水印与明文切换

WPF开发者QQ群&#xff1a; 340500857 欢迎转发、分享、点赞、在看&#xff0c;谢谢~。 效果预览&#xff08;更多效果请下载源码体验&#xff09;&#xff1a;一、PasswordWithPlainText.xaml 代码如下<UserControl x:Class"WpfPasswrod.CustomControls.PasswordWith…

麻省理工学院迷你猎豹机器人,四条腿都能后空翻了,又是黑科技啊~

全世界只有3.14 % 的人关注了数据与算法之美麻省理工学院公布了一款迷你猎豹机器人&#xff0c;是第一个做后空翻的四足机器人。只有20磅的四肢四足动物可弯曲并摆动腿部&#xff0c;使其能够向右或向上行走。机器人也可以在不平坦的地形上小跑&#xff0c;大约是普通人行走速度…

c语言宏高级用法,C语言宏高级用法 [总结]

1、前言今天看代码时候&#xff0c;遇到一些宏&#xff0c;之前没有见过&#xff0c;感觉挺新鲜。如是上网google一下&#xff0c;顺便总结一下&#xff0c;方便以后学习和运用。C语言程序中广泛的使用宏定义&#xff0c;采用关键字define进行定义&#xff0c;宏只是一种简单的…