代码走查和代码审查_这是经过1000多次代码审查后我学到的东西

代码走查和代码审查

这个故事最初发表在我的博客上 。 如果您对这种内容感兴趣,请随时签出并订阅:)

在过去的三年中,我已经审查了1000多个请求(合并)请求。 在那段时间里,我学到了很多东西–主要是关于如何不审阅代码,如何减轻过程的痛苦,使高质量的代码产生什么等等。

拉取请求只需要做一件事

这是要提防的最重要的事情!

在进行代码审查时,您需要牢记很多事情。 “这背后的意图是什么?”“这如何与其余代码保持一致?”“效果会很好吗?” 只是需要回答的一些问题。 因此,当您有一个集中的拉式请求试图解决一个问题时,其中一些问题将变得更容易回答。

另一个重要方面是拉取请求的大小。 更大的请求需要成倍增加的时间来审查。 而且,当我知道我需要花15分钟以上处理请求时,您将不得不等待几个小时。

较大的拉取请求也会有更多的错误,因此获得批准的时间也会大大增加。 这意味着您可能需要等待几天才能批准代码。 而且,如果您的公司敏捷,那将增加合并痛苦的机会,而这仅仅是痛苦的。

最好的办法是将请求合并成有意义的部分–一个请求只能解决一件事。

因此,请注意常见的陷阱,例如重命名代码概括等。 尽管它是纯洁的,而且意图很好,但它使重点不再放在重要部分上,从而提高了代码质量并减少了错误计数。 只需在另一个请求请求中执行您的天才想法即可。

自动化尽可能多的检查

继续存在以下观点:审阅者必须牢记很多事情,其中​​还包括检查代码格式,是否存在适当的文档,可通过的测试等。 我记得当时我不得不考虑所有这些因素,那是分散精力和时间的。

好消息是解决方案非常简单–将所有检查集成到CI管道中。 基本上,每当有人提交拉取请求时,它就会运行所有检查,并且不允许在所有检查通过之前合并。 作为审阅者,您将不必担心再次格式化。

自动化测试   帮助确保作者没有破坏任何东西,并且测试仍在通过中。 根据您的测试方法,这很容易成为您的拉取请求CI中最重要的检查。

自动化的代码格式使理想行长或添加换行符附近的所有参数消失。 只需团队选择一组格式化规则,然后将其交给自动格式化程序即可。 这将使您摆脱很多麻烦。 如果您在同意格式时遇到问题,请查看Google,Facebook或其他一些大公司的做法。

自动化的棉绒检查器对于像Python这样的代码格式化会影响代码逻辑的语言也非常重要。 大多数适用于Python的代码格式化程序只会格式化他们肯定知道不会影响任何逻辑的代码。 通过添加棉绒检查器,您将涵盖所有内容。

值得一提的是类型检查器文档检查器 ,但最重要的是使对您和您的团队有意义的检查自动化。 如果您认为有帮助,请说出来并尝试一两个星期。

与作者坐在一起检查代码

由于您能够与作者一起快速遍历代码并分享您的观点,因此它使审核过程更快。 作者还可以更好地解释其方法背后的原因,例如是否尝试过某些东西以及为什么它不起作用。

这也是与人建立更多联系的绝佳机会,这非常重要。 当您的其他开发人员看到您在他们的个人和业务发展上投入了资金时,他们会感激的。 对于您和作者来说,这也是实践交流的好机会,这对于运作良好的团队至关重要。

但是请注意不要过度执行此操作。 一些拉取请求太小和太简单而无法进行任何有影响的对话。 在那种情况下,与作者坐下来可能是浪费时间。

写评论时要体贴

如果您比代码的编写者更有经验,则需要考虑您怎么说的事情很重要。 写得很好的批评可以使开发人员在将来变得更好,但也可能破坏某人的梦想。

我发现最有效的方法是提出开放性问题–这不是激进的做法,甚至鼓励开发人员进行批判性思考。 这会比告诉别人解决方案花费更多时间吗? 是的,短期的。 但是从长远来看,您正在帮助他们成长,他们重犯错误的可能性较小。

因此,下次有人在for循环中而不是在循环之前打开文件时,没有明确指出,而是问“您如何在这里降低复杂性?” 。 这将意味着很多。

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

最让我感到困扰的是,在一些小的请求中发现了一个错误,因此该功能根本无法正常工作。 这意味着开发人员甚至没有运行代码-可能认为没有必要,因为更改很小。

发生几次之后,我添加了一个标记,称为“ 我在本地运行此代码”,从而完全解决了问题。 我停止查看不在本地运行的代码,人们对此也没有说谎。 没有难过的感觉,因为我们所有人实际上都知道应该这样做。

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

Merge request description
What is new?

Implemented...
What has changed?

Changed...
Checklist
[ ] I ran this code locally
[ ] I wrote the necessary tests
[ ] I covered my code with type-hints
[ ] I updated CHANGELOG
Trello card
https://trello.com/c/

Should know about
Is there anything else that should be known?
Any deployment notes?
Any additional documentation?

翻译自: https://hackernoon.com/this-is-what-i-learnt-after-making-over-1000-code-reviews-ad4r3ujy

代码走查和代码审查

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值