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

C# 删除未使用代码的最佳实践,c#,C#,我想知道人们删除未使用代码的最佳实践是什么。就我个人而言,我喜欢删除(而不仅仅是评论)任何当前未使用的内容。但我不确定要走多远 以这个为例(尽管我对一般性讨论感兴趣)。在我的项目中,我有十几个用户控件。对于后来被屏蔽的特性,我在其中一个UserControls上实现了两个方法和属性。附加代码不是特定于该功能的,但需要支持它。以后可能会有用 我是否应该删除代码,因为我们目前没有使用它,而且代码越少越容易阅读?问题是,未来的开发人员如何知道这项工作已经完成了 或者我应该把它保存在那里,以便其他开发

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

以这个为例(尽管我对一般性讨论感兴趣)。在我的项目中,我有十几个用户控件。对于后来被屏蔽的特性,我在其中一个UserControls上实现了两个方法和属性。附加代码不是特定于该功能的,但需要支持它。以后可能会有用

  • 我是否应该删除代码,因为我们目前没有使用它,而且代码越少越容易阅读?问题是,未来的开发人员如何知道这项工作已经完成了
  • 或者我应该把它保存在那里,以便其他开发人员在以后需要使用它时可以很容易地找到它(他们不会考虑通过源代码管理来查看是否有人这样做并删除了它)
  • 还是有其他选择
这同样适用于当前未使用的UserControl。我应该移除它们还是保留它们


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

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

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

  • 有一种倾向认为注释是与代码的其余部分一起维护的。这不是真的,可能会导致错误回归之类的问题
  • 在一个长块的中间很容易错过一个没有注释的闭式卷曲支架()。
    如果您真的需要,删除的代码仍然可用,但它不再使您的工作副本变得杂乱无章。如果您真的担心旧代码的可发现性,您可以留下一条注释,指示代码已被删除,以及您需要查找的修订号。在一行中,这比实际代码块使用的要好得多。更清楚的是,这段代码被允许失效,具体失效时间是多长。

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


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

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

    不删除代码以便“其他开发人员可以轻松找到”是保持代码活动和编译的一个很好的理由。不要担心库的大小,链接器会删除任何未使用的内容


    如果您正在删除代码,并且希望警告其他人代码的存在以及删除原因,这样他们就不会再犯同样的错误,那么可以给出一个好的注释。

    我也喜欢删除未使用的代码

    如果我知道代码以后会有帮助,我在从主干中删除代码之前创建了一个分支(我们使用的是subversion,所以创建分支既便宜又容易)。这使我能够在需要时轻松地将代码返回一次


    例如,如果您有一个新功能,但该功能在发布时无法完成,则此过程允许从主干中删除部分功能,但您可以在完成后将其重新添加。

    我猜,即使您评论说它在存储库中,它将被重新编写,而不是有人回去抢它

    并不是说我在很多地方都使用过这种“不留下任何代码”的策略(只有一个),但我从未见过有人回到存储库中获取一些旧代码

    然而,除了小的代码块,我也从未见过有人取消注释别人的代码

    如果您想保存它,我会让它完全实现和测试(检查测试!),但是如果需要新代码,条件会改变

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


    如果您不想让它完全功能化并经过测试,那么就剪掉它,让下一个人重新编写。

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

    我们在源代码树中有一个“过时”区域,用于移动不再使用的内容。它远离主干,位于一个通常不签出的区域,因此没有人需要查看它。

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

    “[因为你]使用的是源代码管理系统,所以删除代码是我的首选选项。”--这里,为你修正了这个问题。建议添加一个#3:未使用的代码不太可能得到很好的测试,理论上可能会引入bug和/或安全漏洞。这属于“维护”范畴,所以这和理性#1.+1差不多。我还发现,注释掉的代码块似乎在扫描时吸引了您的注意力-您不想被死掉的代码分散注意力。我必须承认,这是一个非常好的答案,可能比我想的任何东西都好,在我的情况下,我想,我只会把它留在那里,未注释。我认为对我来说,真正密封它的部分是我没有正确考虑的