2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

代码审查的实践要素

  • 2013-07-08
  • 本文字数:1481 字

    阅读完需:约 5 分钟

虽然代码审查是一个被广泛采纳的实践,但是由于存在很多的实践方式,所以开发团队经常搞不清楚它的最佳实践是什么样的,Lorinda Brandon 尝试从多个方面来分析了正确的代码审查时间应该重点考虑的几个因素。

人员结构

在你的团队中有多少同事拥有足够的专业技能来担当合格的代码审查者?作者曾经和多个开发团队沟通过,这些团队都声称本身只有一个资深的开发人员,如果让他来负责所有的代码审查工作,那么团队的核心开发就无法开展了。作者也遇到过类似的情况。在一个小规模团队里,资深的同事总是忙不过来,因为核心的工作都在等着他做。

地理位置

你的团队成员是如何分布的?他们是否是分散在世界各地还是坐在同一个敞亮的办公室里? 代码审查需要精力的专注和反馈,如果开发人员能够面对面的沟通,那么审查工作会便于实施。而物理隔离的远程团队很难达到代码审查的满意结果。

所在领域

你所在的IT 领域需要遵守怎样的规则和约束呢?如果你在一个受到严格监管的行业,那么你必须遵循有关审计和报告的规则,这意味着你必须想办法跟踪代码审查的频率和质量。如果所在的领域把安全性作为重点,那么可能在代码审查过程中要引入安全审计。

复杂性

你的代码复杂性如何?在代码审查时,需要多个不同专业技能的审查者吗?例如,游戏开发可能会引入非常复杂的业务逻辑来处理文字交互和场景跟踪,同时还需要特定的动画处理和内存管理技术。在审查如此复杂的代码时,应该引入多个审查者从不同角度来检阅代码的质量。

而且在许多情况下,不同的项目有不同的需求——存在多个团队构建应用,需要不同的配置文件。这里有一些技巧可以帮助你改进代码审查过程的工具并解决一些可能会面临的问题:

1. 促进沟通

任何审查过程,不论是代码还是文档还是绩效,最好是面对面进行。在你使用工具做完代码审查之后,与相应的开发人员约个时间做口头的反馈。如果你们不在同一地区,可以利用视频或者电话来进行沟通,但是这种沟通是必要的,你可以以此作为协作和指导的一种手段。

2. 利用专业技能

如果被审查的代码与其他代码领域存在关联,或者对安全、性能、可扩展性等方面存在一定的影响,你可能无法只安排一个人来完成审查工作。你需要多个人来查看代码以确保所有可能的后果都被考虑在内。在这种情况下,最好找到一个工具来协助多个人完成审查工作。该工具的作用包括指定哪个人审查哪个角度并把相应的代码展现出来,而且还可以保存审查人员的注解。

3. 公开审查意见

审查工具的优点之一是多人可以集中地审查相同的代码。把所有人叫到一个屋子里做团队审查非常不利于大家考虑各个不同的方面。但是工具可以帮助你让大家分别查看代码并把所有的意见集中起来:

  • 避免意见重复,如果别人已经发表了类似的看法,那么后面的人就不用记录了。
  • 团队学习,通过查看别人的意见能够学习其他人的思维角度和专业领域。
  • 监督审查过程。

提到代码审查的工具,坚果云团队建议“使用好的工具进行轻量级的代码审查”:

“工欲善其事,必先利其器”。我们使用的是 bitbucket 提供的代码托管服务。每个团队成员独立开发功能,然后利用 Pull Request 的形式将代码提交给审查者。复审者可以很方便在网页上阅读代码,添加评论等,然后原作者会自动收到邮件提醒,对审阅的意见进行讨论。即使团队成员分布在天南海北,利用 bitbucket 提供的工具也能很好的进行代码审查。

Eric Landes 在一篇名为《敏捷技巧:什么时候以什么方式来进行代码评审》的文章中,提供了一个时间安排的例子:

  1. 概览本次代码评审的故事 (10 分钟)
  2. 讨论团队指标 (10 分钟)
  3. 强调评审的特别关注点 (5 分钟)
  4. 深入地评审代码 (55 分钟)
  5. 代码覆盖率
  6. 架构
  7. 深入的分析报告
  8. 总结并记录行动事项 (10 分钟)
2013-07-08 08:213381
用户头像

发布了 501 篇内容, 共 284.9 次阅读, 收获喜欢 64 次。

关注

评论

发布
暂无评论
发现更多内容

国内最好的五个企业出海服务商

Wolink

企业出海 跨境电商 出海服务商 海外营销推广 达人营销

从一次启动失败深入剖析:Spring循环依赖的真相|得物技术

得物技术

Java spring

软件系统安全建设方案

金陵老街

软件 信息化

把握政策新导向,以AI风控赋能健康险创新——暖哇科技助力商业医疗保险高质量发展

暖哇科技

DolphinScheduler依赖机制、Open-Falcon告警推送与监控的优化实践

白鲸开源

大数据 开源 Open-Falcon Apache DolphinScheduler 工作流任务调度

基于华为开发者空间,使用仓颉编程语言实现SQL脚本模板渲染工具

华为云开发者联盟

云主机 华为开发者空间 CodeArts IDE for Cangjie

AI赋能,重塑零售业转型策略

伤感汤姆布利柏

基于华为云开发者空间-Versatile Agent开发平台构建昇腾C算子开发知识库

华为云开发者联盟

华为开发者空间 Versatile Agent.

从“看见”到“预见”:合合信息“多模态文本智能技术”如何引爆AI下一场革命。

bug菌

多模态文本智能技术

对话国泰海通证券:证券行业如何破局从0到1玩转可信数据流通

隐语SecretFlow

开源 隐私计算 数据流通 开源活动 可信数据空间

低代码表单控件全攻略:4 大类控件 + 属性配置,数据收集高效又精准

引迈信息

MaaS满血DeepSeek服务结合云主机搭建私有化数学家Agent

华为云开发者联盟

云主机 华为开发者空间 Chatbox DeepSeek-V3 ModelArts Studio

超融合方案对比:企业选型必看的长期价值与隐藏成本解析

智驱前线

基于华为开发者空间-Versatile Agent开发平台构建旅游规划助手

华为云开发者联盟

华为开发者空间 Versatile Agent.

氛围编程:IT领导者须知

码界行者

AI 氛围编程

告别灵感枯竭:社交媒体爆款内容的底层逻辑与公式

Wolink

跨境电商 出海企业 海外社媒营销 海外营销推广 达人营销

海外红人营销提升ROI的秘诀

Wolink

跨境电商 出海服务商 出海企业 海外社媒营销 海外营销推广

海外营销怎么做?

Wolink

跨境电商 电商营销 出海企业 海外营销推广 达人营销

人工智能如何赋能企业出海

Wolink

企业出海 跨境贸易 跨境电商 海外营销推广 达人营销

2025年海外推广渠道全景图:如何分配预算实现最大化ROI?

Wolink

跨境贸易 电商营销 出海服务商 出海企业 海外营销推广

企业海外营销需要数据驱动

Wolink

跨境贸易 跨境电商 出海企业 海外社媒营销 海外营销推广

BOE(京东方)陈炎顺香港论道:从“技术破局”到“战略升维”的全球竞争新思维

爱极客侠

构建智能化IT服务管理新生态-ManageEngine卓豪

ServiceDesk_Plus

ManageEngine卓豪

jemalloc思想的极致演绎:深度解构Netty内存池的精妙设计与实现

poemyang

Netty RPC netty内存管理

企业出海是什么意思

Wolink

企业出海 海外社媒营销 海外营销推广 品牌出海 达人营销

劳务工招聘助手小程序管理系统:革新劳务招聘管理的高效解决方案

微擎应用市场

怎么利用海外社交媒体平台做海外推广

Wolink

跨境电商 出海企业 海外社媒营销 海外营销推广 达人营销

如何量化海外达人营销的真实商业价值?

Wolink

跨境电商 电商营销 海外社媒营销 海外营销推广 达人营销

基于华为云开发者空间-Versatile Agent开发平台零基础开发购房助手

华为云开发者联盟

Versatile Agent. 华为云开发者空间

90%企业踩坑?超融合采购避雷指南:避开硬件锁链,轻量敏捷未来

智驱前线

20 万奖金池就位!Higress AI 网关开发挑战赛参赛指南

阿里巴巴云原生

阿里云 云原生

代码审查的实践要素_语言 & 开发_崔康_InfoQ精选文章