有时,当我们检查软件的提交历史时,我们可能会发现确实有一些提交是非常大的-它们可能会更改10或20个文件,其中包含数百个更改的源代码行(增量)。我记得有一个用于BIG提交的常用术语,但是我不记得确切的含义。谁能帮我?程序员通常用来指代这种BIG和巨型提交的术语是什么?
顺便说一句,一起做出很多更改是一种好的做法吗?
更新:谢谢你们的启发性讨论!但是我认为“代码炸弹”是我想要的术语。
cluster f...
有时,当我们检查软件的提交历史时,我们可能会发现确实有一些提交是非常大的-它们可能会更改10或20个文件,其中包含数百个更改的源代码行(增量)。我记得有一个用于BIG提交的常用术语,但是我不记得确切的含义。谁能帮我?程序员通常用来指代这种BIG和巨型提交的术语是什么?
顺便说一句,一起做出很多更改是一种好的做法吗?
更新:谢谢你们的启发性讨论!但是我认为“代码炸弹”是我想要的术语。
cluster f...
Answers:
(1)Ben Collins-Sussman:“ ...”“ 代码炸弹 ”。也就是说,当有人出现一个具有巨大新功能,花了几个月时间编写的开源项目时,您该怎么办?谁有时间去审查数千行代码?...”
(2)Dan Fabulich:“代码炸弹,或者:有新主意的新手…… 代码炸弹是一个很大的补丁,没有人可以审查。”
(3)Google的“代码之夏”指南:“提早提交,请经常提交...请不要整日工作,然后将所有内容都放入一个代码弹中。相反,每次提交都应独立完成一项任务应该在日志消息中进行总结。”
(4)杰夫·阿特伍德(Jeff Atwood):“代码炸弹……法则30:不要黑夜 ……”
我们可能称其为错误提交。:)
是的,这通常被认为是不良做法,因为它具有以下负面影响:
但是,在某些情况下,大型提交是完全可以接受的。例如:
因此,在任何可能的情况下,都建议使用“外科手术”类型的提交(并将它们链接到问题跟踪器中的任务ID!)。如果您有正当的理由,请继续。
除此之外,我实际上不知道也不认为我听说过大型提交的特殊名称。怪物承诺?胖子吗?
更新: David Cary的答案使用术语“代码炸弹”(最重要的是Subversion的原始创建者Collins-Sussman )链接到著名的IT参与者。这样(尽管到目前为止我还不能说我经常听到)。
顺便说一句,一起做出很多更改是一种好的做法吗?
好吧,长期坚持更改,实施各种功能和错误修复,然后提交它们,这不是一个好习惯,这是可能发生的大型提交的一种方式。
发生这种情况的另一种方式是,如果重构更改了广泛使用的功能的签名,那么所有这些功能都必须更改。这并不一定很糟糕,我也不希望开发人员避免担心超出一些阈值而清理代码。
因此,除了查看提交中涉及的文件数量以外,还有更多的功能。
我听说过的术语是“矮胖的签到”。我不是他们的粉丝。我喜欢较小的提交,这些提交可以确保在项目的合理步骤中不会破坏其他任何内容。通常,重大承诺充满了从发生之时回响一段时间的问题。