1

我有一个 ASP.NET Web 应用程序,它本质上是我们的 Intranet 站点。我在行政办公室的员工管理页面上取得了很大进展。它与 SQL 服务器数据库相关联,我使用的是三层设计(对象、逻辑、数据访问)。它全部被审查并且全部被接受,除了!对于管理假期和假期历史的部分。

在详细介绍之前,我的问题是,如何有效地“解开”不再需要的代码?

例如:以前我将每个 VacationDay 视为具有自己历史的自己的实体。这样我就可以追踪某一天的历史。为了帮助跟踪,我有一个名为 VacationDayAction 的枚举,其中包括诸如 .Submitted、.RequestDenied、.CancellationRequested 等选项。这是为了为每一天提供一丝不苟的细节。然后确定我们不再需要它。然而,我们仍然需要 VacationDays 和它的所有基本功能(保存天数、获取天数等),但现在我们不再需要任何与“历史”相关的类。

我的问题是,当我在 VS 中右键单击一个不再需要的类并转到“显示所有引用”时,我会得到大量分散在几个页面上的结果。我需要摆脱所有这些,而不破坏应用程序的其余部分。难道没有某种“智能”技术或方法可以轻松解开不再需要的部件吗?这尤其困难,因为我所做的 90% 都很好,需要保持原样。然而,分散在这 90% 中的是 10% 不再需要的东西。我也不能只使用 delete 键,因为随着每个引用的删除,我需要确保对该引用的任何依赖关系也以它们不会调用不被调用的东西的方式修复那里了。而且我仍然需要应用程序是可编译状态,

为了让您了解我的低水平经验,我在两年前开始时从未使用过 C#、ASP.Net 或 Visual Studio。当我开始学习之后,有人教我可以使用断点时,这让我大吃一惊。然后当我了解多层设计时,它真的让我大吃一惊。我想知道是否没有一些技术或技巧或功能可以在这种情况下提供帮助,在这种情况下,你必须“解开”并扔掉不必要的东西。

4

1 回答 1

3

这不是一个简单的问题。事实上,我想说这是任何系统开发人员面临的主要挑战之一。如何处理和摆脱不使用的旧代码。有很多关于这方面的文献,很少有真正优秀的答案。一本好书可能是 Michael Feathers 的《有效地处理遗留代码》,它处理了许多相关的问题。虽然读起来并不轻松,可能需要一些时间才能读完,但它可能会帮助你成为更好的编码人员,尤其是在这类任务上做得更好。

也许你可以看看 Resharper 工具?( http://www.jetbrains.com/resharper/ ) 它是一种生产力工具,除其他外,以灰色显示“死”代码(未使用的代码),并允许您将其删除。它还将帮助您从每个类中删除未使用的引用(同样,它们将变灰并让您自动删除它们)。

绘制图表,其中每个主要代码/组件都是一个框,用一条线将其链接到任何相关组件,这可能有助于您获得更好的概览;尝试绘制一个层次结构,显示代码的不同部分是如何相关和依赖的。

The bottom line as far as I know, is that you just have to muddle through it, commenting out code a little at a time, then recompiling and testing it. If it still works, fine, now you can remove the commented out code completely. This would be easier if you had unit-tests covering your code, but I take it as a given that you don't, as is unfortunately often the case.

于 2012-07-03T09:19:11.283 回答