什么是代码审查以及它们实际如何节省时间
剧透警报:如果您喜欢健全的架构决策,又讨厌成为“关键路径”开发人员,那您一定会喜欢这个。

开始使用免费的 DevOps 模板
在该可自定义模板内,采用开放式工具方法开发、部署并管理应用。
Key Takeaways
Code reviews are peer evaluations of code changes that improve quality, share knowledge, and reduce bottlenecks.
Reviews catch logic errors, ensure test coverage, and promote consistent coding standards.
They foster team learning, better estimates, and resilience by decentralizing expertise.
Integrate code reviews into your workflow to enhance collaboration, maintain quality, and increase velocity.
那么,代码审查到底是什么?
当开发人员处理完某项事务后,另一位开发人员会查看代码并考虑以下问题:
代码中有明显的逻辑错误吗?
从要求来看,是否所有案例都已完全实施?
新的自动化测试是否足以满足新代码的需求?是否需要重写现有的自动化测试以考虑代码中的更改?
新代码是否符合现有样式指南?
代码审查应与团队的现有流程集成。例如,如果一个团队正在使用任务分支工作流,则应在所有代码编写完成、自动测试运行并通过之后,但在代码向上游合并之前,启动代码审查。
这样可以确保代码审查者将时间花在检查机器遗漏的内容上,并防止错误的编码决策污染开发主线。
对于敏捷团队来说,里面有什么?
无论采用哪种开发方法,每个团队都可以从代码审查中受益。但是,敏捷团队可以实现巨大的收益,因为工作分散在整个团队中。
没有人是唯一知道代码库特定部分的人。简而言之,代码审查有助于促进整个代码库和整个团队的知识共享。
代码审查分享知识
所有敏捷团队的核心是无与伦比的灵活性:能够从待办事项列表中删除工作并开始由所有团队成员执行。因此,团队能够更好地围绕新工作聚集,因为没有人负责“关键路径”。
全栈工程师能够胜任前端及服务端工作。
代码审查可以做出更好的估算
还记得关于估算的部分吗?估算是一种团队练习,随着产品知识分散在整个团队中,团队会做出更好的估算。
随着新功能添加到现有代码中,原始开发人员可以提供良好的反馈和估算。此外,代码审查者还会接触到代码库中该领域的复杂性、已知事务和顾虑。
代码审查者会因此掌握该部分代码库原开发人员的相关知识。这种做法能形成多元、有依据的信息输入,当这些信息输入被用于最终估算时,总能增强估算的可信度和可靠性。
代码审查允许休假
没有人喜欢成为一段代码的唯一联系人。同样,没有人愿意深入研究他们没有写过的关键代码片段,尤其是在生产紧急情况下。
代码审查在整个团队中共享知识,以便任何团队成员都可以掌控并继续负责交付。(我们喜欢 Atlassian 的混合隐喻!)但重点在于:没有专门的开发人员负责关键路径,这也意味着团队成员可以根据需要请假。
如果您发现自己受到版本控制系统的束缚,那么不妨通过代码审查实现自由。可以自由度假,也可以自由地花一些时间在产品的不同领域工作。
代码审查指导新工程师
敏捷的一个特殊方面是,当新成员加入团队时,经验更丰富的工程师会指导新成员。代码审查有助于促进关于代码库的对话。
通常,团队在代码审查期间会出现隐藏在代码中的知识。新成员以崭新的眼光发现了代码库中需要新视角的粗糙、时间困扰的区域。因此,代码审查还有助于确保新的洞察与现有知识相结合。
专业提示
请记住,代码审查不仅仅是高级团队成员审查初级团队成员的代码。代码审查应该贯穿整个团队的方方面面。知识无止境!是的,代码审查可以帮助新工程师,但绝不应该将其仅仅用作指导练习。
但是代码审查需要时间!
当然,它们需要时间。但是那段时间并没有浪费,远非如此。
这里有三种方法可以为此进行优化。
共享负载
在 Atlassian,许多团队需要对代码进行两次审查才能将其签入代码库。听起来像是需要很多开销?真的,事实并非如此。当作者选择审查员时,他们在整个团队中进行了广泛的选择。任何两名工程师都可以提供意见。这样就分散了流程,因此没有人会成为瓶颈,并确保了整个团队代码审查的良好覆盖率。
合并前查看
在合并上游之前要求代码审查可确保没有代码未经审核。这意味着,对于凌晨 2 点做出有问题的架构决策以及实习生不当使用工厂模式的行为,在它们能够对您的应用产生持久(并且令人遗憾的)影响之前就被抓住了。
利用同伴压力来发挥自己的优势
当开发人员知道他们的代码将由队友审查时,他们会付出额外努力来确保所有测试都通过,并且代码尽可能精心设计,以便审查顺利进行。这种正念也往往会使编码过程本身变得更顺畅,最终会更快。
如果在开发周期早期需要反馈,请不要等待代码审查。尽早提供反馈,通常会产生更好的代码,所以不管在什么时候,都可以勇敢让其他人参与进来。它可以使您的工作变得更好,但也会让您的队友成为更好的代码审查者。良性循环还在继续...!