2010-06-04 26 views
11

有没有人有使用注释掉的代码检查到存储库以查找可见性原因的有效替代方法?用于历史目的的注释掉代码的替代方案

我问的原因是我最近与一位开发人员讨论了检查注释掉的代码。我的立场是,注释掉的代码不应该被检入到我们的VCS中,因为它在技术上不是代码库的一部分,因此烦人的代码不值得它所占用的字节。

他的对应点是,他检查过的一些注释掉的代码仍然说明了他希望在未来修复的一些工作(在这一点上,评论发生在两年前,但除此之外)。他希望将其保留在代码库中,以便他可以轻松找到它,尽管目前还不能编译,但它仍然以全局线显示解决问题的正确方法。

最后,他同意,有点评论说,代码不属于。但是当我们想到替代他的可能时,我们的想法很短。

我能想到的唯一的选择是:

  • 维基:只是贴吧的地方在wiki上。这样做的缺点是它会与其他与代码无关的wiki内容混合在一起,这可能会导致难以搜索它。
  • 索引所有VCS修订版:这对我来说在很大程度上是理论上的,但是有没有使代码库及其整个历史可搜索的系统?

有谁知道/使用任何替代品?我的选择听起来更像是工作,而不是实际的价值,但是我的理由可能会扭曲这种说法,即将代码注释掉无论如何都毫无价值。如果你现在没有时间去修复它,那么我不愿意留在代码库中不够重要(但是如果没有可行的替代方案,我会这么做)。

很抱歉的可怕称号,我不能想出一个更好的

回答

1

听起来像你的朋友应该创建一个分支,并尝试了他的“改进”在那里。您可以很容易地在这个改进分支和当前源之间进行区分,以清楚地表示他打算进行的更改。

3

我知道代码已不再使用,但它包含了可能对未来有意思的想法。

我会保存在控制版本系统中,但我会将它保存在一个单独的文件夹中,如removed-code-to-review-later。然后,我会在检查它时删除它。

4

分支在这里很有用。一种使用SCM的模型是为每个功能创建一个分支。当分支合并是无痛的时候,这很流行 - 所有SCM都不提供缓解...... :-)

这个想法是,你工作的每个功能都有一个专用分支,并且完全在该分支内工作。当功能完成后,工作,测试,记录并赢得两枚奥运金牌等。然后将该分支合并到后备箱中。或者,如果该功能从未完成或被放弃等,该分支将无限期地保持打开状态。但是代码保持可见,准备在某天被某人拾起。

这是存储“正在进行的工作”的好办法 - 因为代码分支可以在临时代码可自由查询。它不需要被注释掉,因为正在进行的工作变化只在孤立的分支中进行,而且甚至不需要编译,因为这些分支通常在达到成熟度之前不会迁移到持续集成中。

不同于注释掉的代码,这些试探性的代码更改查看和搜索,ameanable代码分析工具,重构等

在某些环境中,功能和它的分支也可以有一个相关的变化票或问题跟踪ID。这可以确保重大更改不会丢失,并提供了优先级和组织各种功能的方法,从修复showstoppers到实现某种可能永远不会看到白天的不同方式的实验。

对于搜索,一些SCM有一个搜索前端。例如,SVN有SVNSearch - http://sourceforge.net/projects/svn-search/。也有svnquery,它可以搜索历史和头。

1

根据我的经验,检查注释代码的最大原因是开发人员讨厌打字太多,以至于他们宁愿保留未使用的代码,以防将来需要键入类似的代码片段。

你的情况有点不同,但我还是说:“使用它或失去它”。如果注释掉的解决方案修复了一些重要的问题,那么这将是完成它的一个很好的动机。很容易花更多的时间来解释为什么某些事情不太正确,以及“我们从来没有时间去解决它”,而不是做它。

最后一点是基于断言开发者时间是非线性的,并且你开始动手做的事情比每次“预定投影Y的X个小时”提供更多的价值。

有迹象表明,在创造和合并分支很好的版本控制系统。 Mercurial,git等都将能够做到这一点。即使你不使用其中的一个作为你的主VCS没有什么能阻止你的同事创建本地储存库来保存他的实验英寸

1

在某些情况下它是记录到一些复杂的/独特的解决方案是个好主意问题,供参考。但我认为它不属于代码。恕我直言,我认为某种维基是​​最好的选择。

如果你还没有使用的代码在过去的2年中,你将永远使用它,如果你这样做,你仍然应该使用的代码,为2岁?如果您需要再次将该逻辑添加到代码中,最好从头开始编写它,因为在这段时间内很可能会发生变化,您将学到很多东西,还会为您提供额外的资源,等等

2

一些他检查中还说明了一些工作,他希望在未来修复注释掉的代码

那么他就应该打开你的错误追踪系统里低优先级的票,描述了他想要修正,并将当前注释掉的代码添加为该票的评论。现在他可以将这张票分配给自己,而其他任何人都不会为此感到困扰。

注释掉的代码是像任何其他评论:如果不好好保养它往往会失去与代码,因此它的实用性及其一致性。

0

你的声明“虽然它不会编译目前,它仍然表明全球行来解决这个问题的正确方法。”

<>

你的声明“我的理由是注释掉的代码是不值钱呢。”

我看不到的危害在离开的意见,因为他们往往会提供洞察未来开发商在最初的开发意图是什么,并在现有的代码中的任何电流限制。在不同的系统中存储增加了他们迷路了未来发展的机会。字节是便宜的,它需要重建另一个开发者意图的时间$$$。