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

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

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

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

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

编辑:不言而喻(或者我认为会这样)我们正在使用源代码控制。

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

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

  1. 有一种倾向,认为评论是与其余代码保持一致的。 这不是真的,可能导致错误回归等问题。
  2. 在长块的中间很容易错过未注释的闭合花括号(例如)。

如果您真的需要删除的代码仍然可用,但它不再混乱您的工作副本。 如果您真的担心旧代码的可发现性,您可以留下注释,表明代码已被删除,以及您需要找到它的修订号。 在一行中,这比实际的代码块使用的要好得多,而且这个代码被允许失效,以及它已经失效的时间更加清晰。

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

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

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

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

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

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

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

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

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

我有不需要的代码只是在需要的时候“打开”,这是一种非常好的感觉(并不总是可以完成)。

如果你不能让它完全function化并经过测试,那么就剪断它并让下一个人重写它。

我通常让死代码闲置一段时间,直到它的使用已经稳定并且我将不再使用该function。 那时,我删除它。

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

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

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

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

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