聊聊软件开发的代码审查

简介: 聊聊软件开发的代码审查


不知道你有没有遇到这样的场景,刚上线的一个功能,就出现了一个严重Bug,团队周末集体加班吭哧吭哧的紧急处理,你们彼此抱怨不断;你和老板在给客户演示产品新功能的的时候,突然系统崩溃了,在场的人一阵尴尬,急忙解释一阵说这一块还没处理好。


遇到这种问题怎么办?是每个人只负责其中一个模块么,遇到问题出现问题的人处理吗?不行,这样忙的同学会忙死,闲的同学没事儿做;那招一个测试同学呢?也不行,我们并没有招聘的预算;

其实解决这个问题就是做好代码质量管理,而代码质量管理最重要的方法就是「Code Review」也就是代码审查,为了简单,下文我用CR简写。

代码审查在维基百科解释:


指对计算机源代码系统化地审查,常用软件同行评审的方式进行,其目的是在找出及修正在软件开发初期未发现的错误,提升软件质量及开发者的技术。

简单来说CR就是通过审查代码来提升软件质量和开发者技巧的方式。


为什么要做 Code Review


那么为什么说CR能够提升软件质量和开发者技巧呢?以及为什么我们要做CR?

首先对于初学者,CR是一种很好的学习方式,因为负责主要审查的人往往具有更丰富的经验,知道哪些位置有坑,哪些写法会造成问题,这样可以最大限度的从代码过程中提升个人技能。


尤其是那些资深的同事给新人进行指导讲解的时候,效果可能不仅仅是知识代码层面的,更是对以后工作态度,学习求真的深远影响。要知道工作态度比知识和技能在工作中的影响占比大的多。


记得我刚实习那会儿,就得到过公司技术VP余弦大佬指点,工作中身边的同事也对我的代码进行了比较严格的审阅,那种一行一行的进行矫正,真是酸爽,那个时候能明显感到自己在进步。


其次对于资深开发者,通过CR这种方式,自己能发现原来这种错误也容易出现啊,自己也需要注意下,避免掉坑。


另外有些开发过程有些功能自己使用的方法也不一定做到最好,有同事提出他的意见想法或者技巧时,你们就能碰撞出思维的火花,相互受益。


最后CR更好的利用了人性,就是更能发现别人的问题,这种相互的方式就能大大降低问题故障点。据统计正式的代码审查发现缺陷率 60~65%,非正式不到50%,但也能发现很多问题。


通过这种方式我们在不断交流讨论过程中不仅提升了开发技巧更重要的是软件质量也得到了保证。


怎么做Code Review

说完了,CR是什么(what),为什么(why)要去做CR,先我们来聊聊怎么做(how)CR。

通常情况主要是按照Github的Pull Request发起请求合并代码的方式,通过指向某一个或多个负责合并的人来进行。

代码审查一般会分为三类:正式的代码审查、结对编程、以及轻量型的非正式代码审查。

我们来看gitlab官方示例图:

image.png

图片

上面这个图主要说了这个请求提交做了什么事儿,我们的集成测试通过与否。

image.png

图片

这里面主要看到了我们代码的变更情况,方便做代码审查的人来进行阅读。

我来说一个简单的CR步骤流程:

1. 保证所有的单元测试和持续集成跑过,你这个提交做了什么事(避免浪费别人理解时间)
2. 这个代码至少有两个及以上的团队成员意见通过并且评论回复LGTM(回复任意的都行,有chrome插件可以检测这个数量)
3. 最终进行合并代码入库(可以指定固定人合并也可以不指定)


解释一下第二个步奏,保证有多人进行查看审阅,不仅可以保证代码质量,并且可以保证不会出现单点的情况,比如你请假至少有同事熟悉你写的代码。这也是我们所说的高可用。

在做CR的过程中我们需要注意:

  1. 对代码不对人,很多时候需要注意沟通的艺术,尤其是异步沟通的时候。
  2. 尽量统一风格,不过于纠结风格,保持宽容态度

保证这两点我们就能开心愉快的讨论技术问题,顺便提高了软件质量。


小结

本文最后让我们来回顾一下文章的主要内容。

首先我们通过一个严重bug和系统崩溃引出了解决这两个质量问题的方法--Code Review(代码审查)。

然后我们解释了Code Review可以提升代码质量和团队技能,利用好了这种方式及人性的特点,不仅对新手帮助巨大,也能帮助经验丰富的老司机。

最后我们简单说了Code Review的流程以及做这个过程注意点。

相关文章
|
4月前
|
前端开发 算法 安全
软件开发过程详解
【8月更文第20天】在当今数字化时代,软件开发已成为企业和组织获取竞争优势的关键。一个高效的软件开发过程不仅能够确保最终产品的质量,还能有效控制成本和时间。本文将详细介绍软件开发的各个阶段,包括需求分析、设计、编码与实现、测试与质量保证以及维护与升级,并通过实例帮助读者更好地理解这些概念。
460 0
|
2月前
|
SQL JavaScript 安全
代码审查
【10月更文挑战第13天】
|
5月前
|
设计模式 数据处理 开发者
LabVIEW软件开发中的代码重构如何帮助维护代码质量?
LabVIEW软件开发中的代码重构如何帮助维护代码质量?
55 0
|
2月前
|
安全 测试技术 开发者
软件测试的艺术:从代码审查到用户验收的全面探索
在软件开发的宇宙中,软件测试如同星辰指引,照亮了产品质量的道路。从单元测试的微观世界到集成测试的宏观视角,再到系统测试的广阔天地,以及最终的用户验收测试的终极考验,每一步都至关重要。本文将引领读者穿越这一系列测试阶段,揭示如何通过细致的规划、执行和评估,打造出无懈可击的软件产品。
|
3月前
|
开发者
代码审查的艺术:提升团队协作与代码质量
在软件开发中,代码审查是提升代码质量和促进团队协作的关键实践。本文探讨了代码审查的重要性、最佳实践及其面临的挑战。通过制定明确的审查指南、利用自动化工具、提供建设性反馈等方法,可以显著提高代码质量并促进知识共享。尽管存在抵触情绪、时间投入等问题,但通过团队合作、合理安排时间和培训审查者,可以有效克服这些挑战,实现代码审查的最大价值。
|
4月前
|
大数据 测试技术
自动化测试在软件开发中的重要性
【8月更文挑战第6天】自动化测试作为软件开发过程中不可或缺的一环,能够显著提高软件质量,缩短交付周期,降低整体成本。随着技术的不断发展,自动化测试在各类软件项目中的应用也必将越来越广泛和深入。合理规划和实施自动化测试,将成为软件开发团队提升竞争力的关键所在。
|
6月前
|
敏捷开发 jenkins 测试技术
软件测试中的自动化与持续集成:提高开发效率和产品质量
在软件开发的生命周期中,测试阶段扮演着至关重要的角色。随着敏捷开发模式的普及,自动化测试和持续集成(CI)已成为确保软件质量和加快交付速度的关键策略。本文深入探讨了自动化测试和持续集成的概念、实施步骤及其对软件开发流程的影响。通过引用最新的行业研究和案例分析,文章揭示了这些技术如何帮助团队减少人为错误,缩短反馈循环,并最终提升产品的稳定性和用户体验。
|
7月前
|
机器学习/深度学习 人工智能 大数据
自动化测试在软件开发中的重要性与应用
自动化测试是软件开发过程中不可或缺的一环,它通过编写脚本和工具来执行测试用例,提高了软件测试的效率和准确性。本文将探讨自动化测试在软件开发中的重要性、应用场景以及未来发展方向。
62 0
|
7月前
|
Java 测试技术 持续交付
自动化测试在软件开发中的重要性和应用
随着软件开发的迅速发展,自动化测试技术在软件开发生命周期中发挥着越来越重要的作用。本文将探讨自动化测试在软件开发中的重要性和应用,并介绍了一些常见的自动化测试工具和最佳实践。
|
敏捷开发 前端开发 持续交付
你不了解的软件开发过程
你不了解的软件开发过程
80 0
下一篇
DataWorks