我做了 1000 多次代码审查——以下是我学到的

2025-05-25

我做了 1000 多次代码审查——以下是我学到的

在过去的三年里,我审查了超过 1000 个拉取(合并)请求。这段时间我学到了很多东西——主要是关于如何避免代码审查,如何让审查过程更轻松,以及如何才能写出高质量的代码等等。

拉取请求只需做一件事

这是需要注意的最重要的事情!

在进行代码审查时,你需要思考很多问题。“这背后的意图是什么?”“这如何与其他代码保持一致?”以及“这性能会好吗?”只是需要回答的一些问题。因此,当你有一个专注于解决单个问题的拉取请求时,其中一些问题会变得更容易回答。

另一个重要因素是拉取请求的大小。请求越大,审核所需的时间就越长。如果我知道自己需要花费超过 15 分钟来处理这个请求,那么你可能需要等待几个小时。

更大的拉取请求也更容易出现错误,因此获得批准的时间也会显著增加。这意味着你的代码可能需要等待数天才能获得批准。如果你的公司比较敏捷,这会增加合并冲突的可能性,这非常令人头疼。

最好的做法是将拉取请求拆分成有意义的部分——一个拉取请求应该只解决一件事。

所以,要小心一些常见的陷阱,比如重命名代码泛化等等。虽然这些陷阱本身无害且出于好意,但却会分散我们对重要部分的注意力——提升代码质量并减少错误数量。你还是在另一个拉取请求中实现你的天才想法吧。

尽可能多地自动化检查

继续说,代码审查员需要记住很多事情,包括检查代码格式、是否有合适的文档、测试是否通过等等。我还记得以前必须考虑所有这些事情的时候——这既费心又费时间。

好消息是,解决方案非常简单——将所有检查集成到 CI 流水线中。这样,每当有人提交拉取请求时,都会运行所有检查,并且在所有检查通过之前不允许合并。作为审阅者,您再也不用担心格式问题了。

自动化测试有助于确保作者没有破坏任何功能,并且测试仍然有效。根据你的测试方法,这无疑是拉取请求持续集成 (CI) 中最重要的检查。

自动代码格式化让所有关于理想行长或换行符添加位置的争论都消失了。只需团队一起选择一套格式化规则,并将其交给自动格式化程序即可。这将为您省去很多麻烦。如果您在同意某种格式时遇到问题,可以看看谷歌、Facebook 或其他一些大公司是如何做的。

对于像 Python 这样代码格式化会影响代码逻辑的语言来说,自动化 Lint检查器也非常重要。大多数 Python 代码格式化程序只会格式化那些确定不会影响任何逻辑的代码。添加 Lint 检查器后,您就可以覆盖所有内容。

值得一提的是类型检查器文档检查器,但最重要的是实现对您和您的团队有意义的自动化检查。如果您认为某个工具有用,请提出来并试用一两周。

与作者一起审查代码

由于您可以与代码作者更快地迭代代码并分享您的观点,因此审查过程会更快。代码作者还可以更好地解释其方法背后的原因,例如他是否已经尝试过某个方法,以及为什么它不起作用。

这也是一个很好的机会,可以与更多人建立联系,这一点非常重要。当你的同事看到你为他们的个人和业务发展付出时,他们会感激的。这对你和作者来说也是一个很好的机会,可以练习沟通,这对于一个运作良好的团队至关重要。

但要注意不要过度。有些拉取请求太小太简单,无法进行任何有意义的对话。在这种情况下,与作者坐下来讨论可能是浪费时间。

撰写评论时要考虑周到

如果你比代码作者更有经验,你需要考虑到你表达的方式非常重要。一篇写得好的批评意见可以激励开发人员在未来变得更好,但也可能粉碎一些人的梦想。

我发现最有效的方法是提出开放式问题——它不咄咄逼人,甚至能鼓励开发者进行批判性思考。这会比直接告诉别人解决方案花费更多时间吗?短期内会。但从长远来看,你正在帮助他们成长,他们不太可能重蹈覆辙。

所以,下次有人在 for 循环内部而不是之前打开文件时,不要直接指出来,而是问“你会如何降低这里的复杂性?”。这将意义重大。

添加一个名为“我在本地运行了此代码”的标志

最让我恼火的是,在一个小小的拉取请求中发现错误,导致某个功能完全无法使用。这意味着开发人员甚至都没运行代码——可能觉得改动太小,没必要运行。

这种情况发生了几次之后,我添加了一个名为“我在本地运行了这段代码”的标志,彻底解决了这个问题。我不再审查那些不在本地运行的代码,大家也不再撒谎说自己在本地运行了。我们并没有感到难过,因为我们都知道应该这么做。

奖励:这是我们的模板,每个开发人员在创建拉取请求时都必须填写:

合并请求描述

  • 有什么新鲜事?

    • 实施的...
  • 有什么变化?

    • 已更改...

清单

  • [ ] 我在本地运行了这段代码
  • [ ] 我写了必要的测试
  • [ ] 我用类型提示覆盖了我的代码
  • [ ] 我更新了变更日志

Trello 卡片

https://trello.com/c/

应该知道

  • 还有什么需要了解的吗?
  • 有任何部署说明吗?
  • 还有其他文件吗?

其他新闻

dev.to 给了我灵感,让我想写更多东西,所以我开了一个博客。如果你对这类内容感兴趣,欢迎随时查看并订阅。

文章来源:https://dev.to/jurajmalenica/i-made-over-1-000-code-reviews-this-is-what-i-learned-4e9e
PREV
2020 年最佳 JavaScript 资源 - 从这里开始🚲
NEXT
我的工作 Mac 设置 👩‍💻