删除未使用代码的最佳实践

时间:2009-02-23 22:17:04

标签: c#

我想知道人们删除未使用代码的最佳做法。就个人而言,我喜欢删除(不只是评论)任何当前没有使用的东西。但我不确定要走多远。

以此为例(虽然我对一般性讨论感兴趣)。在我的项目中,我有十几个UserControls。对于后来获得的功能,我在其中一个UserControl上实现了几个方法和属性。附加代码不是特定于该功能,但需要支持它。以后它可能会有用。

  • 我是否应该删除代码,因为我们暂时没有使用它,代码越少,读取就越容易?问题是,未来的开发人员如何知道这项工作已经完成了?
  • 或者我应该保留它,所以如果他们以后需要使用它,另一个开发人员可以轻松找到它(他们不会考虑通过源代码控制来查看是否有人这样做并将其删除)?< / LI>
  • 或者还有其他选择吗?

这同样适用于当前未使用的UserControl。我应该删除它们还是保留它们?

编辑:不用说(或者我认为会这样)我们正在使用源代码管理。

8 个答案:

答案 0 :(得分:36)

首先要记住的是所有代码都应该在源代码管理中

考虑到这一点,您当然希望删除过时的代码而不是仅仅将其注释掉。任何长度的注释代码块都是危险的,至少有两个原因:

  1. 有一种倾向,认为评论是用其余代码维护的。事实并非如此,可能会导致错误回归等问题。
  2. 很容易错过长块中间的未注释的闭合花括号(例如)。
  3. 如果您真的需要删除的代码仍然可用,但它不再混乱您的工作副本。如果您真的担心旧代码的可发现性,您可以留下注释,表明代码已被删除,以及您需要找到它的修订号。在一行中,这比实际代码块使用的要好得多,而且这个代码被允许失效,以及它已经失效的时间更清楚了。

答案 1 :(得分:5)

如果您使用的是源代码管理系统,删除代码是我的首选选项。

使用当前代码时不会妨碍您,如果您再次需要它,您将始终在存储库中拥有代码。

答案 2 :(得分:5)

一段代码可以有两种状态 它是活动的,运行的和测试的,在这种情况下它应该在源控制中 或者它已经过时,你无法想象任何人想要再使用它,仅仅因为它已经过时了。在这种情况下,应删除它。

不擦除代码以便“其他开发人员可以轻松找到它”是保持代码处于活动状态并进行编译的完美理由。不要担心库的大小,链接器会删除任何未使用的文件。

如果您正在删除代码并想要警告其他人那里的代码,并且因为它被删除,那么他们不会再犯同样的错误,那么就可以提出好的评论。

答案 3 :(得分:2)

我的猜测是,即使你评论它存储在存储库中,它也会被重写而不是某人回过头来抓住它。

并不是说我在许多地方工作过这个“没有代码遗留”的政策(只有一个),但我从来没有看到有人回到存储库并得到一些旧代码。

然而,除了小块,我从来没有见过有人取消别人的代码!

如果你想保存它,我会让它完全实现并经过测试(检查测试!)但是如果需要新代码则会改变。

我只需要“开启”就可以获得不需要的代码,这是一种非常好的感觉(并不总是可以完成)。

如果你不能让它完全正常运行并经过测试,那么就剪断它,然后让下一个人重写它。

答案 4 :(得分:2)

我通常会让死代码闲置一段时间,直到它的使用稳定下来。我将不再使用该功能了。那时,我将其删除。

答案 5 :(得分:1)

我也是删除未使用代码的粉丝。

如果我知道代码后来有用,我在从trunk中删除代码之前创建了一个分支(我们正在使用subversion - 因此创建分支非常便宜且容易)。这使我能够轻松地将代码返回一次/如果需要的话。

例如,如果您有一个新功能,该功能将无法完成发布,此过程允许从主干中删除部分功能,但是一旦您完成它就可以将其添加回来

答案 6 :(得分:1)

我们的源代码树中有一个“过时”区域,我们移动不再使用的东西。它在通常没有检查的区域远离行李箱,因此没有人必须看它。

答案 7 :(得分:1)

我打算建议用一条注释来替换已删除的代码,该注释指定了删除代码的工作项。我的理由是这提供了一个“钩子”,可以附加任何代码审查注释。我们正在使用TFS更改集来进行代码评审VS Professional。如果代码被100%删除,则没有钩子。