您如何处理遗留应用程序中未使用的代码?

时间:2010-06-25 02:38:11

标签: c# .net asp.net javascript

在巨大的遗留应用程序中,通常会看到业务规则的变化导致未使用的代码。删除是最好的方法吗?或者是否有标记未使用代码的标准?如果需要,SCM确实有助于恢复旧代码。这也是特定于.NET代码库的。

18 个答案:

答案 0 :(得分:55)

  1. 将旧项目检入源代码管理。
  2. 删除未使用的代码。
  3. 利润!!

答案 1 :(得分:36)

  1. 将其标记为过时。 http://msdn.microsoft.com/en-us/library/aa664623%28VS.71%29.aspx
  2. 下一个周期,将代码注释掉&做适当的评论。在代码块周围设置一个区域,以便它可以很好地折叠。不会占用很多视觉空间。
  3. 下一个循环,删除代码。
  4. 这样,如果您需要弃用某些已分配给他们但需要拨打电话的代码,那么您的团队成员就不会太惊讶。但是允许你做出那些必要的改变!

答案 2 :(得分:15)

总是删除未使用的代码。这是源代码控制的好处之一。

答案 3 :(得分:11)

从迈克尔·杰克逊那里得到一些建议:

  

删除它...删除它...删除它...删除它...

     

没有人想被击败

     

Showin'你的斗争是多么的时髦和强大

     

谁错或正确无关紧要

     

只需删除它...删除它......只需删除它...删除它......

答案 4 :(得分:5)

我认为删除是保持代码清洁的好方法。

如果你不删除,例如:注释掉,或创建obselete实体来存储它们,我已经看到了这样的混乱。

这就是你拥有存储库,分支,标签等的原因。

我发现删除它会更好。如果代码已存在于存储库中。

答案 5 :(得分:5)

我通常将其标记为过时:

    /// <summary>
    /// Purpose of this method
    /// </summary>
    /// <param name="args">Argument 1</param>
    [Obsolete("This method is obsolete, use NewMethod instead")]
    public void SampleMethod(string args)
    {
        //code
    }

    /// <summary>
    /// Purpose of this method
    /// </summary>
    /// <param name="args">Argument 1</param>
    public void NewMethod(string args)
    {
        //code
    }

现在,只要使用标记为Obsolete的方法,编译器就会发出警告。

答案 6 :(得分:4)

标记未使用的遗留代码的最佳方法是删除它。除了将新开发人员与团队混淆之外,它没有任何意义。

在我的老队伍中,我们实际上把它变成了一场名为Grim Repear比赛的比赛。谁能找到并删除代码库中最大量的未使用/死代码。删除死代码和添加死代码的积极点被授予负分。得分最低。

答案 7 :(得分:3)

如果我有不再使用的代码,我会在Craigslist上出售。

答案 8 :(得分:2)

从Pragmatic Programmer一书中应用lesson的好地方。

备份然后删除所有未使用的代码。相信我,它将使开发人员免于未来的头痛。如果您犹豫不决,可能需要基于注释掉的代码的未来功能,那么尝试理解未使用的代码或逻辑甚至不值得。最好从干净的心态开始,而无需破译明显半生不熟的未经测试的代码。

答案 9 :(得分:2)

我更喜欢删除它。源代码控制将保留那些(以及删除它)的历史记录。我讨厌搜索代码并在注释掉的代码中查看结果 - 尤其是当使用/*...*/评论代码时,您无法在查找文件结果中看到代码而不是\\,这至少让我有机会看到结果被注释掉了。

答案 10 :(得分:2)

绝对删除未使用的代码。根据我的经验,遗留代码库的最大问题是了解代码是什么 - 更少的代码意味着更少的理解,使您的工作更轻松。

就像你说的那样,如果你使用源代码控制(你正在使用源代码控制,对吧?)你可以随时取回它,除非你做了一些奇怪的事情(比如动态编译代码或通过反射加载代码),你如果您删除了错误的代码,可能会很快发现,因为您的构建将失败。

答案 11 :(得分:1)

如果某些功能的代码分散在整个程序中,那么不需要但以后可能需要的某些功能的代码会怎样?使用#ifdef控制此类代码(在一个文件中保留用于此目的的所有#define标签的主列表)可以允许随意启用或禁用该功能;试图从版本控制系统重新整合所有一小部分代码似乎更难。

答案 12 :(得分:1)

就个人而言,我删除了我不使用的代码,并依赖源代码控制来跟踪它。我不使用VSS,但不会。

这个规则有一个例外但是......有时候,如果我在某个地方删除代码,而其他人认为它需要在那里太诱人,我会留下评论,快速注释所以他们不要重做我的工作。

答案 13 :(得分:1)

我认为最好的方法是对项目进行版本控制,例如SVN,CVS。然后删除未使用的代码。减少编译的源文件大小,避免使用未使用的代码。

答案 14 :(得分:1)

删除旧版应用程序中未使用的代码。

如果您有源控件删除未使用的代码将不会伤害任何东西,因为它的历史记录保存在您正在使用的任何版本控制软件中。 清洁代码可帮助下一位开发人员进入并进行更改。旧代码仅在必须进行更改时才会混淆问题。

答案 15 :(得分:1)

我删除了代码,但首先我确保它不会在以后造成任何麻烦。如果我以后需要它,我从源代码控制中得到它,我使用一个很好的功能 - 代码比较,我可以看到改变了什么。我没有对未使用的代码进行评论,因为如果其他开发人员正在查看代码,则很难理解为什么不使用它(特别是如果开发人员没有对其进行评论)。因此,删除代码将使其简单明了。

答案 16 :(得分:1)

我相信这是在Refuctoring会议上回答的问题 - http://www.waterfall2006.com在讨论“雨天模块”时 - 你应该编写备用代码以防以后有人需要它......

class SpareCode {
  private int spareInteger;
  private String luckyString;
  private bool youNeverKnow ;
public void spareLogic() {
  spareInteger = 1;
  if ( youNeverKnow ) {
    spareInteger++;
  }
  System.out.println( luckyString);
}

答案 17 :(得分:0)

我的评论方式与我在上线前注释我的System.out.println一样。