为什么代码审查很重要(并且实际上节省了时间!)

剧透警报:如果您喜欢健全的架构决策,又讨厌成为“关键路径”开发人员,那您一定会喜欢这个。

Dan Radigan 作者:Dan Radigan
浏览主题

敏捷团队是自组织的,其技能组合跨越整个团队。这部分是通过代码审查完成的。代码审查有助于开发人员学习代码库,并帮助他们学习新技术和新技能,以提高技能组合。

那么,代码审查到底是什么?

当开发人员处理完某项事务后,另一位开发人员会查看代码并考虑以下问题:

  • 代码中有明显的逻辑错误吗?
  • 从要求来看,是否所有案例都已完全实施?
  • 新的自动化测试是否足以满足新代码的需求?是否需要重写现有的自动化测试以考虑代码中的更改?
  • 新代码是否符合现有样式指南?

代码审查应与团队的现有流程集成。例如,如果团队正在使用任务分支工作流,则在编写完所有代码并运行和通过自动测试之后,在代码上游合并之前,启动代码审查。这样可以确保代码审查者将时间花在检查机器遗漏的内容上,并防止错误的编码决策污染主开发行。

对于敏捷团队来说,里面有什么?

无论采用哪种开发方法,每个团队都可以从代码审查中受益。但是,敏捷团队可以实现巨大的收益,因为工作分散在整个团队中。没有人是唯一知道代码库特定部分的人。简而言之,代码审查有助于促进整个代码库和整个团队的知识共享。

代码审查分享知识

所有敏捷团队的核心是无与伦比的灵活性:能够从待办事项列表中删除工作并开始由所有团队成员执行。因此,团队能够更好地围绕新工作聚集,因为没有人负责“关键路径”。全栈工程师可以处理前端工作以及服务器端工作。

代码审查可以做出更好的估算

还记得关于估算的部分吗?估算是一种团队练习,随着产品知识分散在整个团队中,团队会做出更好的估算。随着新功能添加到现有代码中,原始开发人员可以提供良好的反馈和估算。此外,代码审查者还会接触到代码库中该领域的复杂性、已知事务和顾虑。然后,代码审查者将分享原始开发人员对这部分代码库的知识。这种做法会创建多个知情的输入,用于最终估算时,这些输入能够使该估算更强大可靠。

代码审查允许休假

没有人喜欢成为一段代码的唯一联系人。同样,没有人愿意深入研究他们没有写过的关键代码片段,尤其是在生产紧急情况下。代码审查在整个团队中共享知识,以便任何团队成员都可以掌控并继续负责交付。(我们喜欢 Atlassian 的混合隐喻!)但重点在于:没有专门的开发人员负责关键路径,这也意味着团队成员可以根据需要请假。如果您发现自己受到版本控制系统的束缚,那么不妨通过代码审查实现自由。可以自由度假,也可以自由地花一些时间在产品的不同领域工作。

代码审查指导新工程师

敏捷的一个特殊方面是,当新成员加入团队时,经验更丰富的工程师会指导新成员。代码审查有助于促进关于代码库的对话。通常,团队在代码审查期间会出现隐藏在代码中的知识。新成员以崭新的眼光发现了代码库中需要新视角的粗糙、时间困扰的区域。因此,代码审查还有助于确保新的洞察与现有知识相结合。

专业提示:

请记住,代码审查不仅仅是高级团队成员审查初级团队成员的代码。代码审查应该在整个团队的各方面进行。知识无止境!是的,代码审查可以帮助新工程师,但绝不应该将其仅仅用作指导练习。

但是代码审查需要时间!

当然,它们需要时间。但是那段时间并没有浪费,远非如此。

这里有三种方法可以为此进行优化。

共享负载

在 Atlassian,许多团队需要对代码进行两次审查才能将其签入代码库。听起来像是需要很多开销?真的,事实并非如此。当作者选择审查员时,他们在整个团队中进行了广泛的选择。任何两名工程师都可以提供意见。这样就分散了流程,因此没有人会成为瓶颈,并确保了整个团队代码审查的良好覆盖率。

合并前查看

在合并上游之前要求代码审查可确保没有代码未经审核。这意味着,对于凌晨 2 点做出有问题的架构决策以及实习生不当使用工厂模式的行为,在它们能够对您的应用产生持久(并且令人遗憾的)影响之前就被抓住了。

利用同伴压力来发挥自己的优势

当开发人员知道他们的代码将由队友审查时,他们会付出额外努力来确保所有测试都通过,并且代码尽可能精心设计,以便审查顺利进行。这种正念也往往会使编码过程本身变得更顺畅,最终会更快。

如果在开发周期早期需要反馈,请不要等待代码审查。尽早提供反馈,通常会产生更好的代码,所以不管在什么时候,都可以勇敢让其他人参与进来。它可以使您的工作变得更好,但也会让您的队友成为更好的代码审查者。良性循环还在继续...!

后续内容
发布