注定的代码审查

我为Disy的Tech Blog撰写了这篇文章。 在此处查看原始文件 (用较少的脏话)。 关于数据库和地理信息系统,还有一些有趣的东西,因此,如果您对这些主题感兴趣,则可能需要看看(尽管很多内容都是德语的)。

要使代码审查成功,您应该做几件事。 其中主要:

  • 保持简短(不超过200至400行)
  • 保持简短(评论不要超过一个小时)
  • 保持专注(内聚性较小)

这是我如何处理所有这些帐户的故事,我们仍然可以使它工作。 (我们就是我,也是我的代码伙伴–他是本月我指定的审阅者。)

倒台

我到了–功能终于完成了。 意识到这一点之后,已经刮了一段时间的东西突然突然消失了:您仍然需要进行检查。 对于此代码。 所有的。

对于审查标准,有很多问题! 核心贡献包括分布在30个班级中的大约2500条新生产线。 最重要的是在25个现有类中有大约400条差异线。

只是考虑将所有代码都丢弃在我的代码伙伴上,这让我感到恶心。 如果有人对我这样做,我会给他们一些选择的话,也许是一个包装精美的山猫

我开始证明自己的所作所为:首先是假期;然后是假期。 我当时不在工作,然后我的好友不在。 最重要的是,人们一直在打扰我,而我从来没有处于断断续续的好时机。 这个问题太大了。 代码显然是正确的!

Bla,bla,bla,罪恶的ba语。 它改变了杰克什特尔:我到了–仍然有3000行代码需要审查。

走出黑暗

丢球时您要做的第一件事是什么? 你拥有了! 所以我和我的代码伙伴坐下来,解释发生了什么。 我们检查了他的日程安排,以确保他能够在合理的时间范围内进行审核。 我们最重要的是,要防止这种情况变成永无止境的泥潭。

在他研究了票证之后,我为他提供了代码的高层次概述以及我如何组织事情,因此我们可以讨论如何将更改切成切片并切成一致的评论。 这就是我接下来要做的。

我坐下来,完成了50项左右的任务。 细致地将它们按所接触的代码进行拆分的趋势真正得到了回报,事实证明,这比它们的大小重要得多。 实际上,一些提交相当大,但是这些提交却添加了一些新类,这些新类共同实现了一个小的功能。 在我的工作之前接触代码的代码通常很小,专注,并且不与新内容捆绑在一起。

梳理这些提交花了我大约两个小时的时间,并得到了9条评论:

  • 三个相当大的部分,涵盖了新功能的各个方面
  • 两个中型的,向现有的API添加了功能
  • 三个小版本,涵盖对现有API的微小更改
  • 中等大小的几乎无关的重构

每个评论都包含一个解释性段落,与其他评论相关。

作为一个额外的好处(通常是),详细的准备工作对基础代码及其注释进行了一些微调。

注定的代码审查

由Ryan和Sarah Deeds根据CC-BY-SA 2.0发布

进入光明

现在该开始实际审查了。 我们讨论了以哪种顺序进行处理,然后选择了涵盖新功能的内容。 这样做是为了:

  • 首先把重要的东西弄清楚
  • 在查看之前,请先查看API更改的要求

目前,我无能为力了,所以我让我的审稿人开始工作。 他做了工作! 在接下来的几个小时里,我看到了坩埚的通知充满了我的收件箱。 我仔细考虑了他的评论,准备了一些更改并做了一些笔记。

通常,我会在坩埚中回答,我们会进行书面交谈。 在这一点上,我看到了很多价值,尤其是异步性,并且这样的讨论持续存在。 但是我们同意,在这种情况下,它会极大地吸引人们,导致许多很多变化之间来回变化。

相反,我们决定完成一些配对审核。 在我的好友完成他的第一遍检查(花费了几个小时)之后,我已经看到了他的所有评论,我们一起坐下来,仔细阅读了每个评论。 在经过漫长的一天的回顾之后,这不仅给我们俩带来了很多乐趣和教育意义,还使我们精力充沛且专注。 我们消除了误解,确定了需要进一步审查的领域,并指出了我将要做出的改进。 一路走来,我们一如既往地记录了我们所做的每一个决定:作为坩埚中的评论。

黑暗笼罩着我们,它变成了另一篇评论。 在接下来的几天中,我将按照讨论的方式更改代码,他将逐一检查改进清单。 有一些细节需要解决,但没什么大要讨论的。

反射

犯错是人的,因此也要从错误中学习。 这是我们面对潜在的大量代码审查时学到的东西:

坦白!
  • 不要只是将其丢弃在您的审阅者上,感觉和反馈都不会是正面的。 (好吧,我们现在没有学到这是因为我们没有这样做。这对我们来说似乎很明显。)
  • 与您的审稿人交谈,并确保让他或她加入。
  • 如果可能,请考虑将工作量分散到多个审阅者中。
创建好评!
  • 尝试创建尽可能多的不连续评论。
  • 用至少一个介绍性段落准备每个评论,创建上下文并将其与其他评论连接。
  • 确定一个尊重代码结构的顺序。
不要画东西!
  • 尝试一次投入几个小时就可以开始运作。
  • 齐聚一堂,集中讨论所有言论。
  • 花些时间及时实施所有更改。
  • 考虑接受稍微较不激烈的审核,以加快处理速度。

(实际上,这些建议中的许多建议通常都适用于评论。)总而言之,我怀疑这些评论并不像我在使用该功能时创建较小的评论那样彻底。 但是在那艘船航行之后,我坚信我们已经尽力了。

你呢? 您是否有关于巨大代码审查的恐怖故事?

翻译自: https://www.javacodegeeks.com/2016/04/doomed-code-review.html