硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

做不好 Code Review 的 6 大原因

  • 2020-05-20
  • 本文字数:1680 字

    阅读完需:约 6 分钟

做不好Code Review的6大原因


Code reviews 如果实施不当,它可能会严重拖慢团队的交付能力——许多代码更改会在 Code reviews 活动中停留几天(甚至几周),最终影响产品的上市时间。为何你的 Code reviews 可能会耗时长久,常见原因如下:


  • 缺乏编程指南

  • 没有使用自动化检查

  • 没有做自我审查

  • 提交了庞大的 PR

  • 提交了内容模糊的 PR

  • 没有为完成评审设定时间期限

1. 缺乏编程指南

每个团队都应该有一套人人同意的编程指南。这套编程指南应该包含命名规范、文件夹结构、代码格式以及单元测试、验证等活动的最佳实践。


如果没有明确的指导方针和约定规范,每个开发人员就会按照自己喜欢的方式去编写代码,这将导致在 code review 期间出现大量争论和分歧。如果你注意到有许多关于代码格式、命名规范等方面的评论意见,那么你就需要开始组织团队开展关于编程指南的讨论了。


你的团队既可以制定自己的指南,也能借鉴其他公司的智慧,比如参考谷歌的编程风格指南

2. 没有使用自动化检查

一旦你有了文档化的编程指南,就能进一步探索使用工具去自动检查代码是否遵守指南规范。众所周知,几乎所有的编程语言都有 formatters、linters 等,你可以将这些工具与代码预提交或者 CI/CD 等活动关联起来。


这些工具会对代码进行遍历,检查其是否违反编程规范,并通知代码作者。在提交 PR 前,作者需要解决这些规范和格式问题,这样就能很大程度降低代码评审中所出现的干扰。交给自动化完成的工作越多,作为评审人的团队成员就有更多时间去关注代码中的大问题,这些问题包括设计缺陷、实现缺失等等。

3. 不做自我审查

在要求其别人对自己的代码进行评审前,代码作者首先要自己检查一遍所做的更改。这就是所谓的“自我审查”,类似于我们在给别人发送电子邮件前先校勘一遍。


在实践中,审查自己的代码是一件很有挑战性的事情,因为会出现心理盲点(对自己代码中的缺陷,你可能心理上容易无意识地忽略掉。)以下这些方法,可以帮你更好的进行自我审查:


  • 在不指定任何代码评审员的情况下提交 PR,过几个小时后,自己再回来看看这部分代码,这样你会以全新的目光重新审视自己的代码更改。

  • 不要以一目十行的方式随意地快速浏览自己做出的代码更改,而是要刻意谨慎地去逐行仔细检查这些更改。

  • 按照一个检查清单去进行自我审查——比如,“代码是否遵循了编程指南?”,“我的代码是否已经涵盖了这些变更所需要支持的所有业务需求?”,“我是否为所有可能的用例编写了测试?” 等等。

4. 提交了庞大的 PR

一个 PR 的评论数与 PR 包含的代码更改内容多少成反比。换句话说,越大的 PR 通常会获得越少的评论,而越小的 PR 则会获得越多的评论。


这是因为代码评审者在面对大 PR 所包含的过多内容,往往不堪重负,于是他们可能会快速浏览所有更改,从而快速结束此次 code reviews。这种做法实际违背了 code reviews 的根本目的。而且,有时还会发生相反的情况,一个 PR 里内容过多,吓得代码评审者迟迟不敢行动。于是乎,很多天过去了,这个 PR 都没动静,并未获得任何评论意见。


将一个大 PR 分解成更小的代码块,让这些内容彼此分隔,这个做法是有意义的。这会让代码评审者的活动变得更正确且更快速。

5.提交了内容模糊的 PR

一个代码评审者常常被要求去审查内容模糊或没有清晰功能描述的 PR。然后,代码审查者不得不通过试图回忆来自于每日站会或问题跟踪器上的任务,才能理解这些 d 代码更改意味着什么。


所以,建议为提交的 PR 添加更多细节信息,比如:


  • 这个 PR 包含了哪些更改?

  • 代码评审者应该从哪些文件开始审查?

  • 与之相关的问题跟踪器任务的链接

  • 如果带来产品视觉上的变化,请附上屏幕截图


添加这些信息,将会为代码评审者提供更多的上下文,从而有助于他们更快速审查你的 PR。

6.没有为完成评审设定时间期限

让提交的 PR 永远无法被合并的一种做法是,不为代码评审者完成评审工作设定任何时间期限。


请设定一个合理的时间期限,例如:


  • 代码评审应在提交 PR 后 48 小时内完成

  • 一个针对特定问题热补丁的代码评审必须在 30 分钟内完成


作者介绍:


Sheshbabu Chinnakonda,软件开发人员,问题解决者,喜欢构建新东西也喜欢修补东西。


英文原文:


How to prevent code reviews from slowing down your team


2020-05-20 15:081936
用户头像

发布了 63 篇内容, 共 44.2 次阅读, 收获喜欢 119 次。

关注

评论

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

USB‑C 式的工具联接:MCP 的模块化及通用标准探讨

申公豹

MCP

MatrixOne Intelligence v3.3 正式发布:结构化、自动化、可视化三重进化

MatrixOrigin

焱融存储实力入围国家算力强基揭榜行动名单

焱融科技

人工智能 AI存储 焱融存储 算力基础设施

数字时代,如何保护你的内容安全

腾讯云音视频

腾讯云 内容安全 媒体处理 DRM 水印

飞算Java AI炫技赛:开启副业创收新机遇

飞算JavaAI开发助手

基于ubuntu系统部署FateLLM1.3.0

天翼云开发者社区

云计算

直播预告 | 7月10日晚19:30,解锁AI原生数据力量!

MatrixOrigin

对话 AI 陪伴新宠 Tolan 创始人:拒绝「恋爱脑」,「非人」陪伴更受欢迎?丨 Voice Agent 学习笔记

声网

轻松解密WebDecode:从网页源码中挖掘隐藏的Base64 flag

qife122

CTF挑战 Base64解码

漏洞赏金猎人必备的10款浏览器扩展工具

qife122

网络安全 浏览器扩展

iPaaS+MCP,赋能企业数智化转型,别让数据和AI“躺平”!

谷云科技RestCloud

数据处理 数据集成 集成平台 ipaas MCP

Higress MCP 服务管理,助力构建私有 MCP 市场

阿里巴巴云原生

阿里云 云原生 Higress

官宣!MinerU 正式接入和鲸 ModelWhale,加速您的科研进程!

ModelWhale

科研 minerU modelwhale

这几个 Vibe Coding 经验,真的建议学!

量贩潮汐·WholesaleTide

经验分享

数智制造的下一个范式?低代码与云原生、AI的融合战略展望

电子尖叫食人鱼

低代码

金属材料表面六种缺陷类型数据集 | 适用于YOLO等视觉检测模型(1800张图片已划分、已标注)

申公豹

YOLO数据集

订单初版—支付和履约链路中的技术问题说明文档

量贩潮汐·WholesaleTide

架构 软件开发

使用自然语言体验对话式MySQL数据库运维

袋鼠云数栈

数据库 运维 MySQL 数据库 大数据运维 数据库 大数据

上海交大医学院张维拓老师赴同济医院做R语言训练营培训

ModelWhale

R 语言 同济医院 上海交通大学

观测云产品更新 | 付费计划与账单、事件中心、基础设施等

观测云

产品迭代

e签宝连续六年入选胡润全球独角兽榜单,是中国电子签名行业唯一品牌

科技汇

Excelize 荣获 2025 上海开源创新菁英奖

xuri

GitHub 微软 开源 Excel Excelize

时序数据库 Apache IoTDB V2.0.4 发布|新增用户自定义表函数及多种内置表函数功能

Apache IoTDB

征程 6M 部署 Omnidet 感知模型

地平线开发者

自动驾驶 算法工具链 地平线征程6

技术研发引领前行,中烟创新荣获 “北京软件核心竞争力企业(技术研发型)” 称号

中烟创新

官宣 | Fluss 正式加入 Apache 孵化器

Apache Flink

大数据 flink Fluss Apache 基金会

数据 + 模型 驱动 AI Native 应用发展

阿里云大数据AI技术

人工智能 深度学习 数据处理 模型 大数据、

豆蔻妇科大模型实现重大突破!精标数据 SFT 驱动准确率从 77.1% 升至 90.2%

隽阜

模块化控制协议(MCP)在网络中增强智能体执行效率的研究

申公豹

MCP

OpenAI 即将推出 AI 浏览器;Perplexity 发布 AI 浏览器 Comet,语音操控网页丨日报

声网

MySQL 09 普通索引和唯一索引,应该怎么选择?

不在线第一只蜗牛

MySQL

做不好Code Review的6大原因_语言 & 开发_Sheshbabu Chinnakonda_InfoQ精选文章