【问题标题】:What tools can be used to help clean up and shore up a sloppy .NET codebase [closed]可以使用哪些工具来帮助清理和支持草率的 .NET 代码库 [关闭]
【发布时间】:2009-04-22 12:37:30
【问题描述】:

我不希望这是主观的,但如果答案可以通过建议或方向稍微调味,我将不胜感激:)

在过去的几年里,我的工作一直是开发并现在维护/扩展一个相当大的应用程序。该应用程序是我们部门运行的首批 .NET 项目之一,对于几乎整个开发团队来说,这是一个巨大的学习曲线。由于这对几乎每个人来说都是一种新体验,因此我们编写了一些丑陋的代码——实际上“一些”更像是“可能有几十万行”。

我们的团队现在大部分时间已经成熟,我们意识到我们的错误使应用程序变得很糟糕,并且保持其当前状态几乎与它所取代的神秘 VB6 应用程序一样困难。值得庆幸的是,决策者意识到我们需要纠正我们的错误,但是我们落后于 8 球,我们的许多开发人员要么从事预定的功能增强(我们的业务线中必不可少的邪恶),要么从事副项目。

我们正在使用 .NET 2.0、VS2005(希望迁移到 2008)、TFS 2005(很快迁移到 2008)

  • 有哪些工具可以帮助我们执行编码标准(我正在审查 Juval Lowy 的 C# 标准并将其转录为 VB.NET)

  • 有哪些工具可以帮助我们识别设计不佳的组件?

  • 有哪些工具可以帮助我们映射当前混乱的命名空间?

我可能会用更多的问题来扩展这个,因为我想到了它们,或者响应激发了一个突触。

- 是否有任何工具可以直接针对 TFS 来帮助分析我们的代码?

【问题讨论】:

    标签: .net coding-style


    【解决方案1】:

    获取ReSharper!它有代码清理工具,可以提供极大的帮助——包括违反编码标准的通知。

    我也同意 ChrisF 的建议,即您实施单元测试以确保更改不会破坏该应用程序。 Resharper 可以帮助解决这个问题,它有一个内置工具,可以直接在 Visual Studio 中运行单个或多个单元测试。

    【讨论】:

    • 感谢 ReSharper 的提示,我一定会去看看
    • 不客气。它对我的编码实践产生了巨大的影响——一切都变得更好。顺便说一句 - 我有 FxCop,但最终没有使用它,因为 ReSharper 做得足够我不需要 FxCop。我仍然建议您也检查一下,特别是如果您没有用于 ReSharper 的 $$。
    【解决方案2】:

    首先要做的是确保您有足够的单元测试覆盖率。如果你有这个,你可以重构和重新编码,同时仍然确保你的应用仍然可以工作。

    代码标准 - 你看过 FxCop 或类似的东西吗?

    还有 StyleCop - 仅限 C#

    【讨论】:

    • 感谢 StyleCop 的提示;我们有 VS2005 for Teams,其中包括内置的 FxCop 测试。单元测试在这里是一个肮脏的短语,我们的项目负责人并没有完全掌握“只测试一件事”的概念,当我们提到添加单元测试或进行 TDD 会增加额外的开发时间但可以节省时间时,经理们会畏缩不前。从长远来看——他们没有太大的信心,因为我们的时间线总是超支(讽刺,不是吗?)
    • 去过那里,做过那个,不想再做一次;)
    • 哦,嘘,StyleCop 仅适用于 C#,不过我仍会保留在我的个人工具包中。也许有一天我会获准用 C# 编写一些架构
    • 抱歉 - 错过了您在 VB.NET 中工作
    【解决方案3】:
    • 要检查编码标准,您可以使用FxCop
    • 要了解您的设计,请查看ndepend
    • 通常像resharper 这样功能强大的重构工具会为您提供帮助

    【讨论】:

    • 感谢关于 nDepend 和 ReSharper 的提示,我也不熟悉
    【解决方案4】:

    Resharper 放下手。

    并使背景颜色设置为亮粉色。

    【讨论】:

    • 如果它迫使每个人都使用 ZenBurn 颜色主题,那么你就是我的英雄 :D ...但是粉红色?到目前为止,我的角膜对我很好,但如果我每周让它们度过 60 小时,它们可能会起死回生:)
    【解决方案5】:

    正如许多人所说,Resharper 有助于大幅减少一些冗余和一般的不良做法。我刚刚下载了另一个工具CloneDetective,它可以帮助识别重复代码。两者加在一起看起来就像一个强者。但我还没有评论克隆侦探。

    【讨论】:

    • 看起来它只是 C#,但我仍然会检查它以用于其他目的。感谢您的提示
    【解决方案6】:

    既然您提到您正在使用 VS Team System 并且很快将迁移到 VS 2008,请务必查看内置代码分析 (FxCop) 和代码指标。您也可以将 NDepend 用于您的代码指标。要记住的一件事是,内置代码分析使用slightly different rules,而不是 FxCop 的独立版本。 FxCop(或内置代码分析)也会产生很多“噪音”,并且一些规则对于面向公众 (API) 的代码比对非面向公众的代码更重要。

    StyleCop 对源代码样式问题很有用,尽管它会产生很多“噪音”,而且某些规则不如其他规则重要。 (例如代码“布局”规则说私有方法应该在公共方法之后等等。就代码格式而言,要记住的最重要的事情是它应该是一致的。)

    为了映射当前的命名空间,您可以使用内置的类图,尽管我认为 NDepend 可能会更好地为您提供更全面的图片。

    据我所知,没有工具可以直接针对 TFS 存储库工作。您需要在本地签出代码,运行工具,然后重新签入。

    您还提到您正在查看 IDesign 代码样式文档。您还应该查看Framework Design Guidelines,这是 IDesign 的基础。 IDesign 指南很好,但我不同意所有这些。

    【讨论】:

    • 感谢您的提示,我将成为代码搅动的英雄(尽管我很自豪在我的清理和新开发之间我仍然设法缩小我们的代码库,但其他一些开发人员再次使这真的很容易)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 2023-04-01
    相关资源
    最近更新 更多