我正在尝试重构一个现有的Winform应用程序,以使用MVP被动视图模式。该应用程序的UI、业务逻辑和数据存储代码已经自由混合了多年。看起来它要么从一开始就有独立的层,要么就是有人试图将其分成层。无论哪种情况,层边界都没有得到尊重。
由于表单直接操作领域对象和数据源(反之亦然),我的第一个任务是创建Presenter/Controller对象并委托这些责任。
该应用程序是一个.NET 1.1应用程序,我正在使用带有相当有限的重构插件的VS.NET 2003进行开发。我使用测试生成器为现有代码创建样板单元测试,然后逐个手动编辑每个测试。显然,这将测试代码执行的内容,而不一定是它应该做的事情。对于新类,我正在采用TDD。
在进行这种规模的重构工作时,有哪些技巧、资源和需要注意的问题?
我已经掌握了几个资源:
- 编程书籍集合;《重构》、《企业应用架构模式》、《Web应用架构基础》; - 互联网(当然); - 大量的含咖啡因饮料。
更新: 举个例子,您会采取什么步骤将以下内容转换为:
由于表单直接操作领域对象和数据源(反之亦然),我的第一个任务是创建Presenter/Controller对象并委托这些责任。
该应用程序是一个.NET 1.1应用程序,我正在使用带有相当有限的重构插件的VS.NET 2003进行开发。我使用测试生成器为现有代码创建样板单元测试,然后逐个手动编辑每个测试。显然,这将测试代码执行的内容,而不一定是它应该做的事情。对于新类,我正在采用TDD。
在进行这种规模的重构工作时,有哪些技巧、资源和需要注意的问题?
我已经掌握了几个资源:
- 编程书籍集合;《重构》、《企业应用架构模式》、《Web应用架构基础》; - 互联网(当然); - 大量的含咖啡因饮料。
更新: 举个例子,您会采取什么步骤将以下内容转换为:
private void OneOfManyFormEventHandlers(object sender, System.EventArgs e)
{
string LocalVariable;
decimal AnotherLocal;
if (!this._SomeDomainObject.SomeMethod(ClassField, out LocalVariable, out AnotherLocal))
{
MessageBox.Show("An error occurred calling method");
return;
}
this.FormControl.Value = LocalVariable;
this.AnotherFormContorl.Value = AnotherLocal;
this.AnotherPrivateMethod();
}
转化成这个:
private void OneOfManyFormEventHandlers(object sender, System.EventArgs e)
{
this.FormPresenter.DoSomething();
}