什么是代码审查以及为什么我们需要继续这样做

在这篇文章中,我将尝试回答2个问题。

  • 什么是代码审查?
  • 为什么我们要审查代码?

什么是代码审查?

代码审查是一个或多个软件工程师(作者除外)正在阅读和检查代码的活动。 谁在检查代码称为审核者。 在此活动结束时,审阅者将提供对代码的反馈。

描述似乎很简单,但是如果您深入研究代码审查过程,将会发现它更加复杂。 为了更好地理解代码审查过程,我将尝试回答“为什么我们要审查代码”问题。

为什么我们要审查代码?

这个问题的答案因所从事的行业,团队结构,产品而异。 在下面,我将尝试回答最常见情况下的“为什么我们要审查代码”问题

1.检查代码是否正确运行

通常,所有审阅者都会首先检查代码是否正常运行。 由于代码审查是一项有时间限制的活动,因此审查者首先检查容易出错的常见代码,以便在给定的时间范围内进行有效的代码审查。

这是容易出错的常见代码段

1.1循环

检查循环条件是否满足

检查是否满足循环退出条件

检查迭代次数是否为预期的迭代次数

—对于循环迭代,一个错误关闭可能是错误。 您将循环设计为迭代n次,但迭代n-1次(有关更多详细信息,请参见:https://en.wikipedia.org/wiki/Off-by-one_error)

1.2条件(If / else)和比较(<,>,≤,≥)运算符

条件运算符是代码执行的分支点。 基于对逻辑语句的评估,从不同分支执行代码。

条件运算符的逻辑语句容易出错。 如果条件语句出错,则代码将以不同于设计的方式执行。

我将提供有关条件运算符常见误解和错误的链接。 审阅者应检查可能的误解和格式错误。

误解https : //stackoverflow.com/questions/47959876/which-are-the-most-common-pitfalls-with-conditional-if-statements-in-c/47959877#47959877

错误https : //stackoverflow.com/questions/47959876/which-are-the-most-common-pitfalls-with-conditional-if-statements-in-c/47959897#47959897

另外,还可以在条件运算符中创建逻辑错误。 特别是对于边界条件,审阅者应更加小心。 可能的错误

使用<代替≤,反之亦然>代替≥并反之&&代替|| 反之亦然

1.3空检查

“空引用异常”是软件开发人员最常见的错误之一。 代码审查是减少此错误发生频率的重要机会。 还有一些代码分析工具会警告我们可能出现的空引用异常。( Resharper空参考文档

奖金:

C#具有可为空的类型,可让您将null分配给值类型变量。 可能需要一些用例,例如

数据库将布尔值保留为true,false和null有一个可为空的数据库字段

有关可为空的类型的详细信息: https : //docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/nullable-value-types

2.检查代码是否满足要求

显然,测试是检查产品是否满足给定要求的主要活动。 我们需要考虑的是,发现错误的时间要花多长时间。 基于这个事实,我建议执行一个基本测试。 我们已经在团队中讨论了基本测试,并且已经决定根据我们过去的经验来应用它。

需求文档,用例文档和代码提交注释可以帮助审阅者检查代码是否满足需求。

提示:代码提交注释是审阅过程的真正帮助者。 代码提交注释必须回答以下问题

您在代码中所做的工作?是否有与您的实现相关的用例或需求?是否有与您的实现相关的RQ编号?

3.检查是否违反了编码准则/编码约定

每个软件开发人员都有自己的开发风格,并尝试以自己的方式实现代码。 应该限制​​它以避免代码库中的混乱。 编码准则和约定正试图避免这种混乱。

如果有可用的指南文档或约定,则审阅者将检查代码是否存在违规行为。

4.集体代码所有权和代码重用

也许您听到过“集体代码所有权”一词。 它在极限编程中定义。 马丁·福勒(Martin Fowler)也称其为“无代码所有权”。 (https://martinfowler.com/bliki/CodeOwnership.html)

简单来说,这意味着软件开发团队的任何成员都可以在任何地方进行任何更改。 对于团队来说,这始终是一项艰巨的工作,因为每个成员都需要了解源代码的每个部分。 代码审查活动是为“集体代码所有权”奠定基础的绝好机会。

我确定您已经实现了代码库中已经存在的功能。 对于使用大型代码库的软件开发人员来说,这是一个常见的用例。 如果您可以有效地使用代码审查,则将有更好的机会重用已经存在的代码块。

5.自我完善

大多数软件开发人员都喜欢他们的代码。 如果在代码审查活动结束时有任何负面反馈,则可能会被误解和个性化。

我建议打破代码审查活动的这种负面气氛。 审阅者必须尽可能地从重新编写的代码中受益。 我已经看到开发人员不会对彼此的代码给予任何积极的反馈。 如果您尝试利用该代码并尝试从您正在查看的源代码中学习,那么您也可以对好的代码给出积极的反馈。 我已经体验到,积极的反馈正在为代码审查活动创造更好的氛围。

这是开发人员的共同信念,他们认为开发人员只能通过编写新代码来改善自己。 显而易见,边做边学是一个有用的概念。 但是我们需要考虑的是,检查其他开发人员的代码是改进的另一种方法。 以我的经验,我学习了编程语言的一些新功能,更重要的是,在我的复习活动中,这是解决问题的另一种思维方式。

6.代码可读性

如果开发人员获得了旧版代码,则最有可能抱怨的第一点是代码的可读性。 即使六个月后我阅读了源代码,我也总是问谁写了这个凌乱的代码:)开发人员总是会牺牲其他出色功能的可读性,他们会感觉更好。

我认为在可读性和其他可读性之间没有取舍(即使我的想法有相反的看法)

  • 可读性与性能
  • 可读性与简单性
  • 可读性与..

由于这些原因,代码可读性应该是我们审查代码的主要原因之一。 甚至变量名和函数名也可能对代码的可读性产生很大影响。

马丁·福勒(Martin Fowler)也有句名言。 任何傻瓜都可以编写计算机可以理解的代码。 好的程序员编写人类可以理解的代码。 马丁·福勒(Martin Fowler),2008年。”

复查是您帮助同事编写人类可以理解的代码的最后机会。

最后

在这篇文章中,我试图描述什么是代码审查,并试图确定我们进行此活动的原因。 在下一篇文章中,我将尝试回答“如何”的问题。 我将提供有关我们如何审查代码的详细信息。

特别感谢Gokhan TopcuHalilKiracı的评论和宝贵建议。

感谢您的阅读。

From: https://hackernoon.com/what-is-code-review-and-why-we-need-to-keep-doing-it-wj7b3281

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值