我最近经常遇到的一个问题是我的演讲者班级变得太大的问题。通常情况下,我可以在不跳过节拍的情况下砍掉一堂普通的大课。但是演示者有时更难削减,而不会使代码更难遵循。
特别是当页面开始填充面向 CRUD 的控件时。有时我会划分控件,但如果它们受到其他控件的影响,则协调逻辑本身就很复杂。有时我会划分列表或网格数据检索,但有时可能会有类似的陷阱。
是否有任何技术、经验法则或您从演示者中重构出来的公共区域?
我最近经常遇到的一个问题是我的演讲者班级变得太大的问题。通常情况下,我可以在不跳过节拍的情况下砍掉一堂普通的大课。但是演示者有时更难削减,而不会使代码更难遵循。
特别是当页面开始填充面向 CRUD 的控件时。有时我会划分控件,但如果它们受到其他控件的影响,则协调逻辑本身就很复杂。有时我会划分列表或网格数据检索,但有时可能会有类似的陷阱。
是否有任何技术、经验法则或您从演示者中重构出来的公共区域?
我通常使用两种方法:
更新
拆分视图时,我通常首先拆分界面并让我的表单实现多个界面。
public class ComplexForm: Form, ISubView, IOtherSubView
{
...
}
然后我将演示者分成我创建的许多视图。
public class SubViewPresenter
{
private ISubView subView;
...
}
public class OtherSubViewPresenter
{
private IOtherSubView otherSubView;
...
}
您可以更进一步,将 ISubView 和 IOtherSubView 的实现移至用户控件或保持原样。如果您使用的是被动视图模式,这只是小菜一碟,因为表单无论如何都只处理 UI 逻辑。一旦我拆分了演示者,我会尽量避免演示者之间的直接交流。如果需要任何通信,我会尝试通过域对象间接进行。
尝试提取在将数据传递到 DAL 或将其推送到视图之外执行活动的代码。例如,如果您必须进行电子邮件更新或执行业务逻辑,请尝试将它们提取到单独的类中。我经常处理同样的问题,并且一直在尝试将尽可能多的逻辑转移到各个域/实体类并在那里执行验证。
希望这会有所帮助。