2009-10-28 118 views
2

我已经继承了一个asp.net项目,并且我发现页面背后的代码包含很多业务逻辑。重构将业务逻辑与代码分离

我已经决定,在大多数情况下,最好离开工作代码,而不是尝试做大规模的重构。但是,有些页面执行的功能可以在命令行实用程序中重新用于批处理。我想集中精力在这些页面上,重构业务逻辑并参考其他实用程序。

我目前正在寻找重构这个特殊的页面,其代码后面有6200行代码。我发现的是,试图找到后台代码和页面特定对象之间的依赖关系是非常单调乏味的工作。

我想知道是否有人知道一个工具,一个VS功能,或一种方法,可以让我系统地定位和攻击这些依赖关系?有些东西可以让我识别引用ViewState,文本框,面板,下拉列表等的代码的任何区域,所以我可以将这些引用移到方法参数中,并最终将此功能移出页面类。我可以马上想到

回答

3

我会首先检查任何不遵循Single Responsibility Principle的方法,并将它们分解以便它们可以执行。一旦完成,您应该掌握代码的功能,并且您应该能够更轻松地对代码进行分组,并将其移至专用的类中,以便创建必要的对象以供您随时使用。我发现ReSharper是一个非常有用的工具来帮助完成这一切。最终,在成功重构之前,您始终需要牢牢掌握代码中的基础知识。

我们都曾经在那里,并且你有我最深切的同情心,但是你愿意尝试这一切意味着你已经朝着正确的方向前进。祝你好运!

0
+0

NDepend是否显示比装配等级更精细的粮食依赖信息?给定一个班级成员,它能告诉我该成员依赖的其他班级成员吗? – Aheho 2009-10-28 18:45:47

+0

我不这么认为。它可能只是给你一个鸟瞰图 - 你可以从鸟瞰本身开始。你可能会发现使用NDepend的所有页面之间的依赖对称性可能对你有帮助。 – 2009-10-28 18:55:26

0

哇首先对不起来这里组装。任何人会在后面的代码中放入6000行代码应该被打破:)

现在我已经完成了这种重构。我会在几个步骤处理这个:

(1)创建逻辑区域#REGION和#EndRegion 一样 - 保存方法,load方法或 (2)看看你是否可以基于在这些地区建立物理的业务对象的业务 图层 (3)完成后,只需将所有代码都引用到相应的类。

我知道你想要一些工具,使这一切都消失,但我害怕通过这样做,你会挖洞北斗。理解代码并通过方法移动它的方法将会给你更好的理解。