如果更改超过80%,是否应该在课程文件中更改作者姓名?


18

我正在重构现有的Java测试类集以进行自动UI测试。有时我最终会在类文件中进行大量更改或完全对其进行修改。这使我认为,当我重写整个课程时,是否应该在注释部分中更改作者姓名?

我在贪婪吗?还是让我看到我的名字并在有疑问的情况下问我会有用吗?


17
您正在使用版本控制吗?我发现提交日志是对作者身份的一种更可靠的跟踪机制(如果有合法的需要,...)
rwong 2011年

5
如果名称具有代码的任何种类的值,则该名称应存在。即联系人。责任等。如果是这种情况,请在结束日期和新名称后加上标签。
独立时间:

15
在班级档案中使用教员姓名的目的是什么?
2011年

2
如果文件具有作者姓名的占位符,则很可能它也具有更改日志的占位符。我会将我的姓名而不是原始作者放在更改日志中。无论如何,我永远不会在自己编写的代码上留下自己的指纹,只有我老板的指纹。
mouviciel 2011年

1
把他们的名字保留为作者并在下面添加一行写着“改写/重构的名字日期”的问题是什么
Ryathal 2011年

Answers:


15

这真的取决于...

如果您认为以后可能会有其他人有兴趣询问原始作者,请在代码中输入他的名字。如果您认为某人可能有兴趣亲自问您,请在其中输入您的名字。而且,如果您认为这两种方法都可行,请输入两个名称(或类似“基于...的工作”的注释)。

当然,如果在工作场所必须强制使用源代码控制,而这是获取源代码的唯一途径,那么就可以避免烦琐的事情,并将每个作者的评论都从源代码中删除。例如,在我的工作场所中,我们在源代码管理中有很多源文件,在这里我们不必费心在源代码中写任何名称。如果我想知道是谁负责文件,过去,或者是特定更改,TortoiseSVN会轻松为我生成该文件的日志。

另一方面,我们有很多VBA宏,这些宏是由某些人编写的,并传递给其他人(其中一些人已经离开公司多年),并且经过大量修改,所有这些都不使用源代码控制。幸运的是,这些文件的注释通常包含作者姓名和某种历史记录日志。


13

我刚碰到另一篇文章,OP询问作者的名字是否应该在文件头中,并且似乎至少有2/3的回答者说甚至不应该列出该名字,并且应该使用版本控制只需跟踪谁更改了文件即可。不知道该帖子发生了什么,但是现在找不到。<-(因此为匿名“ OP”)

就个人而言,我发现文件头中列出的作者很有用,但原因略有不同(这可能与他们环境中的其他人无关)。即使我们尝试练习社区所有权并经常在项目的各个部分上工作,但我们往往只有很少的团队成员比其他人更了解代码的某些方面。因此,当某人(尤其是来来往往的承包商)打开了一个他们从未见过的文件时,作者就成为了首选。他可能不是唯一的贡献者,甚至不是多数贡献者,但他的名字排在首位,他承认在将有关代码的知识/信息分发给团队的其他成员方面负有一定的责任。我们可以在标题中列出一个以上的人,这实际上是多个人做出的贡献并感到负责。

当我对文件有疑问并且不得不诉诸版本控制来识别主要或最有知识的人时,我的确感到沮丧。然后最终从一个人转到另一个人,因为他们都否认真正知道代码的作用……他们只需要插入并修复一两个错误即可。

这种做法对我们的团队有效,因为我们没有交接。除非有人退出或搬到其他团队,否则该代码/项目将与该人以及我们的团队一起存在。显然,如果维护代码的人与编写代码的人不同,那么没人会在意标头中列出的人。

因此,根据我对文件头的看法,我想说,如果您更改了文件的80%,您会觉得现在您是任何问题的专家(而且您可能应该有这种感觉),是的,并更新文件标题以在上面加上您的名字。如果您对删除以前的人感到不满意,也可以至少在暂时将他们的名字留在那里。您总是可以向原始作者询问,我敢肯定他们不会介意您更改名称,因为我假设您对更改文件本身的80%并不感到难过。

更新:找到了那个帖子。不知道我如何设法从八月开始退缩。我刚读完《实用程序员》,在上一章中,作者讨论了签署工作和问责制(另一篇文章提到了这,这就是我查找它的原因)。这本书非常有道理,现在我考虑一下,也许我们应该介绍团队政策,即列出谁作为作者,应该包含在有问题文件的所有代码审阅中。谁在S​​VN中更改文件的最后一个或大多数都无所谓,作者是所有者,而且是所有者。


1
我明白你的观点,但谁是“ OP”?
塔伦(Tarun)

可能会有一个项目页面,或一个内部Wiki,可以在其中放置联系信息,以供所有人查看。在分支和合并期间,出现了将这些信息(文档和联系人)放入源代码管理的困难。
rwong 2011年

@Tarun:OP =“原始海报”(即问问题的人)。这是在线讨论论坛中使用的一种表达方式。
sleske 2011年

同意@Tarun,指向该帖子的链接将有助于您直观地回答。我猜是这个吗?
yannis 2011年

1
@rwong:为什么在分支和合并过程中出现问题?通常,合并变更的人应该了解它(否则,为什么要合并它?)。因此,日志中的人就是要问的人。
sleske 2011年

5

我觉得作者的名字没有什么用。如该问题所示,通常没有单个作者,因此无法命名“作者”。

当然,您可以列出所有做出了重要贡献的人员的列表,但是您已经可以从版本控制日志中获得它了-那么,这有什么意义呢?

在我的项目中,大多数文件中没有作者信息。如果有问题,只需查看日志即可,通常很明显一两个人完成了大部分工作,因此您可以询问他们。

编辑

答案假定使用版本控制的项目。如果您不(始终)使用VC,那么将作者(列表)以及一些更改历史记录放入文件中可能是一种可行的解决方法。尽管如此,您可能应该尽快开始使用VC,在这种情况下,请参见上文:-)。


so what's the point?不在vcs下的项目,在某个时候迁移到其他vcs的项目(不幸的是,并非所有迁移方案都允许历史迁移),以及同时使用多个vcs的项目-一些FLOSS项目采用了使人们更容易贡献的方法,而不是将它们限制为一个vcs(svn人们发现git很难,git人们发现svn无法使用,我们让人们都嘲笑这两者)
yannis 2011年

1
@YannisRizos:好的,是的。我隐式地假设任何软件项目都将使用版本控制。编辑了我的答案。
sleske 2011年

当然,无论涉及哪个vcs,我都可以使用一些较小的vcs-fu轻松解决我的其他观点。但实际上,不幸的是,它们很少是。
yannis 2011年


1

源文件的创建者应该/必须始终在源文件中提及(IMHO)。加上良好的标题注释,这应该表明作者为什么开发源代码以及他/她对于编写代码的想法。至于代码的维护者,添加维护者的名称对于跟踪源代码控制至关重要。

再次,作者的名字恕我直言,应该包括代码的源版本,版本控制系统之外,更改发生的第一个日期以及更改请求号。原因是,如果决定更改VCS,则存在代码版本的历史记录,作者的身份以及开发人员可以参考的更改请求编号(如果他们需要知道维护者为什么做了他/她做过)。因此,在我们的组织中,我们的格式如下:

/**
 * $comment
 * <p />
 * $cr_number, $date, $author, $description 
 **/

3
“如果决定更改VCS,那么会有版本代码的历史记录。”我希望没有一个理智的组织甚至考虑在不迁移历史记录的情况下迁移VCS(至少是最近的历史记录)。毕竟,这就是使用VCS的重点。
sleske 2011年

1
完全不同意。此类信息应通过版本控制进行跟踪。否则,实际上没有办法知道谁对哪些行进行了更改(假设有多个人在处理一个文件)。将其放在文件中只是其他地方可用信息的低保真重复。
布莱恩·奥克利

1
@Bryan Oakley,我根本没有删除版本控制,而是说明在代码中识别一个人是一种了解谁在源代码上工作的方法,而无需通过版本控制进行必要的查找。此外,在版本控制系统之外还有一些代码可用,应该排除作者姓名吗?
Buhake Sindi 2011年

1

我很想看到原始作者的名字,只要能找到一个人来开始寻找有关代码的答案。(作者通常没有记忆,但这至少是一枪!)

我建议您只需在原始作者的姓名下添加姓名即可。

无需替换其他人的名字,因为他们可能知道您原来不需要的某些方面,而您之后的其他人也可能需要与该人交谈。


第三段为+1,因为原始作者可能认识其他人,他们在代码中做了某些事情,但是没有在上面加上他的名字。
Coyote11年

1

我对@author评论的政策是:

  1. 如果是全新文件,我将自己设为@author。
  2. 如果它是现有文件,则不管我对文件执行什么操作,我都不要理会@author。

如果您对某件事有疑问,则文件的@author无关紧要-您要编辑的文件的哪一部分的@author无关紧要。那[git/svn/whatever] blame是为了什么

IMO,@ author需要离开。


一方面,您在新文件中将自己列为作者。另一方面,您希望作者离开吗?
Anthony Pegram

1
公司编码标准要求使用@author标记。否则,我根本不会使用它(因为我希望它消失:))。
Michael Moussa
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.