【CSDN 编者按】你认为 PR 的长度多少最为合适,本文作者认为的理想长度是 50 行。
原文链接:https\://graphite.dev/blog/the-ideal-pr-is-50-lines-long
未经允许,禁止转载!
作者 | GREG FOSTER 译者 | 弯月
责编 | 夏萌
出品 | CSDN(ID:CSDNnews)
大多数工程都认为,代码变更规模越小越好。原因很简单,拉取请求(Pull Request,PR)越小越容易审查,出错的概率越低,部署的速度也越快。
但 PR 的理想长度究竟是多少呢?会不会出现 PR 太小的问题?如果说小 PR 更好,那么究竟有多好呢?

PR 的理想长度应为 50 行
我们认为,PR 的理想长度应为 50 行。
50 行代码变更的审核与合并速度比 250 行快约 40%。与 250 行的代码变更相比,50 行代码修改后被撤销的可能性低 15%,而且每行变更的审阅意见增加了 40%。此外,如果队友提交的 PR 的中位数为 200 行,而你的中位数为 50 行,那么你交付的总代码量将多出 40%。
50 行是确保编程速度、增加审核意见、降低撤销率以及提高提交代码总量的最佳选择。就可接受的范围而言,我推荐每个 PR 为 25\~100 行代码。根据数据,我们发现 PR 越小,花费在审查、合并以及每行评论上的时间都越少。但有一个限制:如果代码修改行数低于 25 行,则修改被撤销的概率会提高,而且交付的总代码量也会降低。
下面,我们来谈谈原因,并看看支持这一结论的数据。

样本集
本文中所有基于数据的陈述都使用了通过 Graphite 同步的私有以及公共 PR 和代码库。为了找出理想的 PR 大小,我研究了以下四个主要指标及其与 PR 大小的关系:
-
审核与合并代码的时间;
-
撤销修改的概率;
-
平均评论数;
-
年度代码变化总量。

注意事项
根据我们收集的这些数据推断结论时,需要注意以下事项:
-
根据 PR 的大小进行分类时,分类的大小并不是统一的,也不是线性的,因为线性大小分类的粒度太细,指数大小的分类又会丢失很多细节。
-
我使用了 PR 大小的中值,而非平均值,为的是避免个别重构导致整个数据发生扭曲。
-
修改被撤销的判断标准是:PR 的标题中带有“Revert”(撤销)一词,因为 git revert 会自动将这个单词添加到标题前面。
-
我们发现 Graphite 用户通常倾向于创建较小的 PR,因为许多组织使用基于主干的开发风格(这会鼓励较小的 PR)。
