仅仅为了解决非关键性的错字就值得做出承诺吗?


67

如果我在代码中遇到了非关键性的拼写错误(例如,print(error)语句中出现了错误的撇号),是否值得做出承诺来解决该错误,还是应该将其单独放置?

具体来说,我很好奇如何权衡提交日志的解决方案与解决这些非关键错别字的价值。我倾向于解决它们。我是在学脚吗?


40
如果琐碎的事情使任何事情变得棘手,那么您要么需要投资于更好的VCS,更好的日志过滤工具,要么需要更好的实践来指出不同的修复严重性。
Rex Kerr

@ root45尽管您查看结果,但它们的语法与本问题所要求的完全不同。
伊兹卡塔2012年

Answers:


130

我个人的感觉是,即使只是小小的改进,提高质量值得给附加的提交日志条目带来些许麻烦。毕竟,当您考虑破窗效果时,小的改进就非常重要。

您可能需要在TRIVIAL:其前面加上标签,或者如果您的VCS支持,则将其标记为琐碎的。


72
我想补充的是,我宁愿像这样的东西分开提交,而不要与其他东西混在一起。集总的问题在于,过多的噪音会使代码检查者无法进行相关的更改。+1
Andy

9
+1代表提及破窗效果。小事情很重要。如果一切都干净,人们在提交粗心的编写或未经测试的代码之前会三思而后行。
罗伊·廷克

25
同样,如果您将其与某个功能结合在一起,然后角色重新启用该功能,则会丢失更改。一次提交一件事。
ctrl-alt-delor 2012年

4
我真的很想知道哪些VCS允许将评论标记为琐碎的事情。我曾经使用SVN,Hg和Git,但在任何一个中都没有发现类似的东西。
锡安

3
@Andy噪音不是最糟糕的部分……如果某人后来因为不想要该功能而决定例如还原此提交,突然间您还将失去作为提交一部分的小改进。
rFactor

49

您不是在做书呆子,最好单独解决它们。更改越原子化就越好-您不希望将崩溃的错误修复与500个注释/键入更改混在一起。


9
+1每个修订版应仅与一个特定的修订有关。如果每个修订在实际更改之间还修正了一些随机错别字,则将其反向移植到修订版就成了梦IGHT。
格兰特(Grant)

28

在一般情况下:是

总是值得提高可维护性的软件。

就去吧。

如果您即将发布版本...

... 如果您不是团队负责人,请与他/她核对


关于提交日志的内容...

我同意其他人的看法,如果仅是解决一个单独的错字,您至少应该写一些东西使其与“功能”相关的提交区分开。

一种常见的做法是在问题跟踪器中执行一些永无止境的任务,以跟踪永无止境的变化。例如,有以下任务的情况并不少见:

  • 大型自动化无害清理(空白扫掠),
  • 语法和拼写错误
  • 建立系统修改,
  • 等等...

请注意,当人们懒于创建正确记录的故障单时,这些ID不会用作几乎所有物品的一次性任务ID。尤其是如果您拒绝未链接到ID的提交(这是一件好事,但是像这样的大型任务对于懒惰的开发人员将更具吸引力)。


7
正在与您的团队负责人确认拼写错误吗?如果我是对即将发布的版本感到压力的团队负责人,那么我就不会被如此琐碎的事情打扰。
2012年

2
@Joh:不是您可能必须中断构建,而是可能有其他构建作业,或者可能已经标记并准备使用,并且您的审核控制(取决于您的行业)可能会迫使您进行此无害的提交对于任务和需求,因此,如果它突然出现,可能会让人头疼;版本发布后,您可以轻松保存几天。但总的来说,我会同意你的看法,甚至会说一家像这样运作的公司做错了。但是您不是会解决此问题的人,因此,如果您不资深,请由他们来解决。
haylem

2
@Joh:基本上,如果我的团队负责人在他即将开始新构建(或已经开始构建)时看到新构建突然在构建系统上跳起来,那么我可以向您保证,使用这种方法他的压力水平将会提高以及……
haylem

7

错别字应作为提交添加。修复拼写错误的单词或语法错误将提高代码的可读性。

使用诸如“ Fixed typo”或“ file.c中的Fixed typo”之类的提交消息将帮助您将这些提交与其他主要代码提交区分开。


7

是的,您绝对应该这样做,尤其是在项目初期。

为什么?两点:

  1. 您可能不知道打字错误是否“很关键”,直到为时已晚。有些修复程序可能无法修复,因为每个人都认为这不会有什么大不了的。直到它是。

  2. 与进行数百行代码/函数调用之后,尽早并有意识地修复错字要容易得多。同样,临时黑客可能会很快变得半永久。这就是为什么我必须处理同时具有“ CollapseAll”和“ ColapseAll”方法的对象的原因。


2
是的-在所有正确答案中,我最喜欢提及这一点,它取决于“何时”。
桑科旺科(Wonko the Sane),2012年

4

对于最终用户可能看到的语法错误,那么是的,绝对值得进行提交,因为用户或QA很有可能会出现并报告错误,并且需要对其进行跟踪。如果已解决,则可以加快解决问题的时间。

但是,如果这是围绕代码的注释中的语法错误,我将不做任何事情,除非它是对实际代码的更改的一部分,在这种情况下,您将更新代码的文档。


3

如果您担心弄乱提交日志,那么您在做其他错误。:-)频繁提交是一件好事!我一直犯错字。尽快在代码库中获取它们,并加快开发周期!


2
I commit typo fixes all the timeIMO令人担忧,请尝试寻找具有更好英语的程序员?
Lie Ryan 2012年

雅拿这些天你能得到的。寻找一个完全可以编写可行代码的程序员是一个严重的问题!
Brian Knoblauch

2

我投赞成票。签入他们。我在一家讨厌人们签入东西的公司工作。我的意思几乎是任何东西。代码审查非常广泛,因此,如果签入的更改只是修正了错字,您就会抱怨。您可以想象代码的状态。实际上,代码并不可怕,但是它像糖水一样渗出,而不是像酒一样流淌。


0

您的变更管理流程是否允许?

在我的环境中,我所做的每次提交都必须与业务用户或强制性的系统级更改所请求的更改请求联系在一起,并完成相应的最终用户测试过程。像您描述的简单错字可能不会被记录为两者中的任何一个(我发现我的一个应用中存在错字和语法错误,已经存在了4年之久,没有人注意到),所以如果/当审核员来时打电话给我很难解释自己。

我将保存您正在描述的更改(实际上,实际上有一个-方法名拼写错误,我刚刚发现了它),当我有一个“实际”更改时需要并在日志中添加“固定各种错别字”。


+1在某些环境中是这样。请不要仅因为工作地点不正确而投票。
MarkJ 2012年

-1您的变更管理过程似乎很浪费时间。我会理解(甚至更喜欢)每个提交都必须与变更请求相关-您的过程的这一部分看起来还不错。但是OMG似乎是禁止开发人员发起的请求(例如,重构/修正错误),这对我来说是一个很大的危险信号。它种假设企业用户/审计人员总是知道的比开发商更好-如果这将是有史以来接近真理,那么他们会编写的代码本身
蚊蚋

如果开发人员可以说服批准的人进行他们值得进行的更改,那么他们可以前进。但是,如果我在方法名称中找到一个简单的错字,或者找到了一些应复制/粘贴的代码,这些代码应该重构为方法,则未经授权我无法进行更改。这不仅仅是“用代码做正确的事”-必须执行验收测试,开发人员也无法向业务人员说“我做了这一改变,您永远不会注意到我在做什么”。做到了,但您必须经历一个测试周期。”
alroc

@alroc认为“如果可以说服力”只是在适度外观下掩盖了适得其反的过程。可以说服业务/审计进行重大更改,约定的里程碑检查点/发布等要求,这很有意义,可以。花费几个小时/天来证明需要花费一周的开发和质量检查的工作量,这很乏味,但是很公平,可以。但是,对于每一个拼写修复或提取方法都必须强制执行此操作……给我一个休息-这无非是在错误的时间在错误的阶段无意识地插入了控件
gnat 2012年

让我再次尝试解释一下。如果我可以在处理其他已批准的更改时纠正错字或提取方法,则可以将其放进去而不必卖给任何人。但是,如果不先出售强大的功能,就无法做出用户看不见的变更,并且不会对企业/用户产生直接的积极影响。
alroc 2012年

-1

使用DVCS编辑历史

如果您担心干净的提交历史记录,请考虑在功能分支中进行主要工作。如果碰巧使用分布式VCS,则可以在将提交历史记录推送到主分支之前轻松地对其进行编辑。如果您使用的是SVN,请尝试使用Git-它可以与Subversion 进行双向交互,并且您还可以在实际提交Subversion之前编辑历史记录。

否则要保持常识

如果您不希望或无法编辑提交历史记录,则没有功能上的理由对不影响自动测试或编译的次要错字进行早期提交或原子提交。在我看来,在这种情况下,保持提交历史记录整洁比真正执行原子提交更为重要。将一两个错字更正与“常规”修改混合在一起不会损害任何潜在的审核过程。但是,您可能想将几个琐碎的更正归为一个提交,也许是在较大的编码会话之后“清理”时。

注意,功能性错误仍应在原子提交中尽快提交。

此处答案的一般语调似乎建议即使对于较小的错别字也应采取“快速完成一切”的策略。我倾向于不同意并欢迎讨论。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.