什么是代码审查,什么时候应该做?

957 阅读10分钟

What is Code Review and when should you do it?

代码审查是软件开发生命周期的一个重要部分。它使开发人员能够极大地提高代码质量。

这个过程就像写一本书。作者创作故事,但编辑要审查它,这样就不会有任何错误,比如把 "你的 "和 "你的 "混淆。在这种情况下,代码审查是阅读和评估其他人的代码的行为。其目的是为了在早期阶段发现需要改进的地方或错误,否则可能会被忽视。代码审查过程通常发生在与代码库的合并之前。

现在我们将讨论代码审查的好处以及如何正确地进行审查。请记住,在创建软件时,无论是小项目还是大项目,都要进行代码审查。


目录

为什么代码审查很重要?
代码审查的好处
什么时候和谁做代码审查
应该在哪里做代码
最佳实践是什么?
如何进行代码审查?
代码审查的敏捷案例
代码审查为公司节省资金
为什么要雇人做代码审查?


为什么代码审查很重要?

任何软件产品、网站或移动应用程序,都是由代码组成的。这些代码越一致,工作起来就越方便,比如说,如果需要改变项目的话。

一个高质量的代码应该是容易理解的,灵活修改的,可读的。但由于工作发展迅速,可能会忽略这些因素。这就是为什么需要一个代码审查程序来提高其质量。

因此,代码审查加速并简化了软件开发的过程。

代码审查的好处

1.确保了设计和实现的一致性

每个开发人员都有一个独特的编程风格。如果开发人员继续使用他们的编码风格,这就会阻碍合作并延迟进展。代码审查迫使开发人员遵循特定的编码实践。使用这种方法,所有的开发人员(包括新的)会更容易理解源代码。

从长远来看,当团队成员在整个项目中发生变化时,代码审查也是有价值的。保持一致的编码模式也将使未来的开发者花更少的时间来分析现有的代码,而是建立新的功能。

2.优化代码以提高性能

由于编程的单调性,即使是最有经验的开发者也会忽略编程中的错误。通过邀请一组新的眼睛来审查代码单元,代码审查有助于在继续前进之前削减错误。

3.合作和分享新技术

一般来说,开发人员独自工作,很容易犯一些错误。通过我们的代码审核服务,有机会学习更好的技术来编写代码,而且,可能会学习如何做得更好。这样,开发人员可以通过学习最新的技术来提升他们的技能。

4.跟踪项目要求和质量

项目有明确定义的范围和要求。但当一个项目涉及到几个开发人员时,一些不必要的事情就会发生。想象力云与项目经理紧密合作,确保流程与客户需求一致。

代码审查通过比较开发和预期的情况来管理情景。它验证了开发的功能。这样做可以迅速解决对范围或要求的任何误解。它还有助于确保不遗漏关键功能。

尽管代码审查看起来像是另一个例行检查,但它们的作用远不止于此。代码审查改善了协作、学习、及时验证和简化开发。

什么时候和谁做代码审查

代码审查发生在所有自动化检查之后,工作分支与主分支(源代码)合并之前。

在代码审查过程中,至少有两个角色存在。编写代码和创建Pull Request的人是 "作者",而检查代码质量的人是 "审查者"。 审查者和作者可以通过下图更深入地阐述。

What is Code Review and when should you do it?

代码审查应该在哪里进行?

这个过程可以发生在很多地方,比如开发者的机器、在线平台等。以下几点解释了在哪里和如何进行代码审查。

  • 式。肩上代码审查发生在开发人员的办公桌上,有经验的团队成员会走过新代码并提出建议。这种方法是最容易使用的,不需要预定义的结构。

  • 电子邮件传递。一旦代码准备好了,就通过电子邮件发送。虽然电子邮件提供了一个更被动的代码审查方法,但内容可能会嵌套在多个回复中,难以管理和搜索。此外,确定何时完成审查也是一种挑战。

  • 结对编程。使用这种方法,许多开发人员可以出现在工作站上,但只有一个人写代码,另一个人提供实时反馈和建议。

虽然它可以作为检查代码和培训开发人员的有用工具,但由于其耗时性,它可能被证明是低效的。这个过程锁定了审查员在这期间做任何其他的生产性工作。

  • 工具辅助的。工具辅助的代码审查过程使代码审查更容易。它可以是开源的,也可以是付费的,如GitHub、BitBucket等。今天,大多数人更喜欢它。它一般有助于。

    • 组织和显示更新的文件。
    • 在审查者和开发者之间提供一个沟通渠道。
    • 衡量代码审查过程的有效性。

什么是代码审查的最佳实践?

1.创建一个代码审查检查表

代码审查核对表是一种结构化的方法,用于在接受代码之前确保代码质量。其中的一些项目有:。

  • 功能性。代码的行为是否符合PR/MR作者可能的意图?代码的行为是否符合用户的期望?
  • 可读性。代码应该是不言自明的。对变量、函数和类使用适当的名称。
  • 安全性。代码是否将系统暴露在网络攻击之下?是否需要更多的测试?
  • 架构。代码是否设计合理并与周围的结构相适应?
  • 可重用性。代码是否使用可重复使用的组件、功能和服务?对于一些事情,如结构和逻辑,你可以自动检查(如静态分析)。
  • 测试。PR/MR是否有正确的和精心设计的自动化测试?
  • 评论。评论是否清晰和有用?

其他的,如设计和功能,需要人工审查。用某些问题来审查代码可以帮助你专注于正确的事情。例如,你可以测试代码来回答。

  • 代码的作用清楚吗?
  • 它是否按照预期执行?
  • 这段代码是否满足监管要求?

当你批判性地看待代码时,你将确保你带着问题去检查正确的东西。这可以减少测试时间。

2.引入代码审查度量标准

没有度量,你就无法纠正代码质量。对客观指标的测量可以改善你的审查,评估流程变化的影响,并预测完成一项任务的时间。一些常用的审查指标包括。

  • 检查率。你的团队审查特定数量的代码的比率,通过将代码行数除以检查时间来计算。如果审查代码需要很长的时间,可能会有可读性问题。

  • 缺陷率。发现缺陷的频率除以检查时间。这个指标可以帮助你确定你的测试程序的有效性。例如,如果你的开发人员发现缺陷的速度很慢,你可能需要更好的测试工具。

  • 缺陷密度。你可以通过用缺陷数除以数千行代码来计算它。然后,你可以将更多的资源分配给最易受攻击的组件。假设你的一个网络应用的缺陷明显多于项目中的其他缺陷。可能需要更多有经验的开发人员来处理它。

3.将你的代码审查保持在60分钟以内。

不建议审查代码的时间超过60分钟。过了这个时间点,性能和对细节的关注就开始下降。最好是频繁地进行代码审查(在短时间内),这样的休息时间可以让你的大脑重新充电。然后,你可以用新的眼光再次审视它。频繁的审查将帮助你提高代码库的质量。

4.将你的检查限制在每天400行。

试图一次审查大量的代码会使你更难发现缺陷。将代码审查保持在每次400行或更少。代码行数限制与时间限制同样重要。它可以帮助你维护一个更高质量的代码库。

5.提供有益的反馈

与其说是批评,不如说是建设性的。通过提出问题而不是发表声明更容易做到这一点。确保给予建设性的反馈以及赞美。当面给予反馈(或甚至做你的审查)将有助于你以正确的语气进行沟通。审查是一种学习经验,对所有参与者都有好处。

如何进行代码审查?

如果你决定自己或在内部进行一次代码审查,你应该遵循以下步骤:

  • 知道你在代码审查中要寻找什么。
  • 了解进行代码审查的不同方法。
  • 举行定期的小组会议,参与者可以收到关于他们特定领域的反馈,同时也可以收到关于任何问题的说明。
  • 使评论清晰而具体。
  • 对改进持开放态度。
  • 可以进行讨论。
  • 从小的改动开始,然后审查更复杂的改动。
  • 保持提交状态的更新。

代码审查的敏捷案例

在敏捷环境中,有可能无缝地进行代码审查。

其前提是要适应不断变化的需求,更快地响应用户需求,简化流程,缩短开发迭代,并实现更高的生产力。它涉及到持续关注技术上的卓越性和应对变化的能力,同时保持高水平的质量。

苹果和谷歌是著名的敏捷公司,他们产品的质量反映了这种额外的努力。

上面提到的代码审查的方法是敏捷过程的一个例子。它们在减少错误和提高源代码的质量方面成本较低,而且很有效。

代码审查为你的公司节省资金

代码审查允许你在完成之前修复错误,确保合规性,并确认应用程序符合规格--而此时进行这些修改的成本会更高。

要看到代码审查的时间和成本的节省来自哪里,你需要以不同的方式来看待这个过程。捕捉错误和漏洞并迅速修复它们意味着它们不会在下一个开发阶段造成问题。如果你不立即抓住它们,返工所涉及的时间和成本就会成倍增加。IBM的系统科学研究所报告说,在实施阶段修复bug的成本是设计和架构阶段的五倍
此外,在集成测试阶段修复bug的成本是测试阶段的十倍,十五倍,发布后是三十倍。