我有一个ASP.NET Web应用程序,它本质上是我们的Intranet站点。我在行政办公室的员工管理页面上取得了很多进展。它与SQL服务器数据库绑定,我使用的是三层设计(Objects,Logic,DataAccess)。全部都经过审核,所有这些都被接受了,除了!管理假期和度假历史的部分。
我的问题,在我详细介绍之前,如何有效地“解开”不再需要的代码?
例如:之前我将每个VacationDay视为拥有自己历史的自己的实体。这样我就可以追踪个人日的历史。为了帮助跟踪,我有一个名为VacationDayAction的枚举,其中包括.Submitted,.RequestDenied,.CancellationRequested等选项。这是为了每天提供细致的细节。然后确定我们不再需要它。但是,我们仍然需要VacationDays及其所有基本功能(节省时间,获得日期等),但现在我们不再需要任何“历史”相关类。
我的问题是,当我右键单击一个我不再需要在VS中的类并转到“显示所有引用”时,我得到了大量分散在几个页面上的结果。我需要摆脱所有这些,而不会破坏应用程序的其余部分。难道没有某种“智能”技术或方法可以轻松解开不再需要的部件吗?这是特别困难的,因为我所做的90%都很好,需要保持原状。然而分散在90%的是不再需要的东西的10%。我不能只是用删除键来攻击,因为删除了每个引用,我需要确保对该引用的任何依赖性也以不会调用不是的东西的方式修复那里了。而且我仍然需要应用程序是一个可编译的状态,以便我可以测试应用程序的其余部分由于某些删除而没有崩溃的方式。
为了让您了解我的低经验水平,我从两年前开始从未使用过C#,ASP.Net或Visual Studio。当我开始学习时,有人告诉我,我可以使用断点,这让我大吃一惊。当我了解多层设计时,它确实让我大吃一惊。我想知道是否有一些技术或技巧或功能可以帮助在这样的场景中,你必须“解开”并扔掉不必要的东西。
答案 0 :(得分:3)
这不是一个简单的问题。事实上,我认为这是任何系统开发人员面临的主要挑战之一;如何处理和摆脱未使用的旧代码。关于这方面有很多文献,很少有很好的答案。一本好书可能是Michael Feathers的“有效地使用遗留代码”,它处理许多相关问题。虽然它没有轻松阅读,可能需要一些时间才能通过,但它可能会帮助你成为一个更好的编码器,特别是在这类任务中更好。
也许你可以看一下Resharper工具? (http://www.jetbrains.com/resharper/)它是一种生产力工具,除了其他功能外,还显示灰色的“死”代码(未使用的代码),并允许您将其删除。它还可以帮助您从每个类中删除未使用的引用(同样,它们将变灰并允许您自动删除它们。)
绘制图表,其中每个主要代码/组件是一个框,其中一行将其链接到任何相关组件可能有助于您获得更好的概述;尝试绘制一个层次结构,显示代码的不同部分是如何相关和依赖的。
据我所知,最重要的是你只需要混淆它,一次一点地评论代码,然后重新编译和测试它。如果它仍然有效,那么你可以完全删除注释掉的代码。如果您使用单元测试来覆盖您的代码,这会更容易,但我认为这样做是不会的,不幸的是通常情况下这样。