我总是遇到一个问题,我的Visual Studio(2008)中的项目变成了巨大的怪物,一切都通常被引入到Web应用程序项目中。我知道,从检查一些开源的东西,他们往往有一个解决方案中的多个项目,每个都有自己的责任。如何在Visual Studio中重构大型项目
有没有人有任何建议如何重构呢?什么应该在一个单独的项目与Web项目的一部分?你能指出一些关于这个问题的参考资料吗,还是仅仅是你随着时间而习惯的东西?
我总是遇到一个问题,我的Visual Studio(2008)中的项目变成了巨大的怪物,一切都通常被引入到Web应用程序项目中。我知道,从检查一些开源的东西,他们往往有一个解决方案中的多个项目,每个都有自己的责任。如何在Visual Studio中重构大型项目
有没有人有任何建议如何重构呢?什么应该在一个单独的项目与Web项目的一部分?你能指出一些关于这个问题的参考资料吗,还是仅仅是你随着时间而习惯的东西?
将您的项目整洁地组织到名称空间中。命名空间不应该太大,不能太小。使每个名称空间具有公共“接口”(即一组公共类),并且不从其他名称空间访问名称空间的内部实现细节。不同的命名空间通常涉及应用程序的不同部分,例如您将拥有与UI相关的命名空间,业务逻辑,帮助器功能等。Framework Design Guidelines对如何设计命名空间有一些很好的建议。
当您觉得您的项目变得太大时,只需确定明确相互关联的一组命名空间并将它们移动到单独的项目中。由于其他名称空间已经只使用移动的名称空间的公共接口,所以将名称空间重构为新的项目只是一个文件移动操作。
这很有道理。你是否试图将项目中的类文件与特定的Web项目文件分开?或者你让他们混合(同时命名空间)。是否有任何命名空间的最佳做法?对不起,我知道这是非常基本的,但我已经这么做了几年了,我终于到了沮丧的时刻。 – Aaron 2010-04-20 00:39:37
FDG书是指导。一旦你确定了有意义的命名空间,尝试对它们进行平衡并将巨大的项目分割成几个较小的项目。我同意ReSharper很好,但NDepend更有用。 http://codebetter.com/blogs/patricksmacchia/archive/2008/09/23/getting-rid-of-spaghetti-code-in-the-real-world.aspx – 2010-04-20 05:56:51
从底层开始(最简单的类不依赖于框架以外的任何其他类),并查看是否可以将依赖关系分离为功能单元。例如,如果你有一堆相互引用的数据或业务逻辑类,但是从不引用任何UI类,那么你就有了一个可以分解到另一个项目的候选者。如果你找不到清晰的分隔点,那么你有一个设计问题,应该可能做一些重构。
我也同意使用名称空间是一个很好的开始。即使在一个项目中,您也可以通过自然地将类组合在一起的方式来隔离或最小化依赖关系。将它们放在同一个文件夹中可以强化这个分组作为一个功能单元,并且可能真的帮助那些将来需要维护代码的可怜人。相信我,我试着想想那个可怜的家伙,因为不止一次,那个可怜的家伙一直是我。编写代码的人在写他的时候和我有相同的名字,这让我感到一种小小的安慰。
查看guidance given by the Sharp Architecture project。它的ASP.Net MVC,但相同的原则适用于ASP.NET和其他项目。把这些东西放在一起的家伙们都是聪明我一般会将他们的建议作为默认使用,只有当我有充分的理由时才会流浪。
,他们提出的基本分层是
在一个asp.net程序,我喜欢用MVP模式的情况下,这将基本上意味着
您还可以尝试查看ASP.NET MVP project。
那么首先你需要Resharper ... – cletus 2010-04-20 00:24:20