C# 管理大型WinForm代码

C# 管理大型WinForm代码,c#,winforms,visual-studio-2010,C#,Winforms,Visual Studio 2010,我想问问专业开发人员,他们是如何管理一个大的windows窗体类的。在不同的文件中使用partial关键字拆分它是一个好主意吗?这是我目前正在做的事情,但它会创建不必要的设计器文件,当您在VS中双击它们时,会弹出一个空白的winform: 所以我所做的,基本上是在一个文件中为每个相关的控件组分组事件和代码逻辑。我的答案是“我不”。如果您需要在一个类(在本例中为表单)中包含大量代码,通常意味着您的类正在做大量工作,您需要减少耦合。实现这一点的一个好方法是使用一种MVC或MVP模式表单,将逻辑放在

我想问问专业开发人员,他们是如何管理一个大的windows窗体类的。在不同的文件中使用
partial
关键字拆分它是一个好主意吗?这是我目前正在做的事情,但它会创建不必要的设计器文件,当您在VS中双击它们时,会弹出一个空白的winform:


所以我所做的,基本上是在一个文件中为每个相关的控件组分组事件和代码逻辑。

我的答案是“我不”。如果您需要在一个类(在本例中为表单)中包含大量代码,通常意味着您的类正在做大量工作,您需要减少耦合。实现这一点的一个好方法是使用一种MVC或MVP模式表单,将逻辑放在另一个位置,并使用UserControls,以便在不同的控件中具有不同的功能(使用它们的控制器或演示器,具体取决于您是实现MVC还是MVP)。分而治之。

< P>我不认为我是专家,但一旦我们有一个类似的问题,一个不停止成长的主要形式。

解决方案就是OOP,生成独立且可重用的类,这些类可以位于具有内部可见性的同一命名空间中

例如,您有一个比较表单。菜单,它看起来可以从比较表单中的主代码中独立出来

从另一个角度来看,“可读性”-部分类是有用的,但要考虑到,即使在不同文件中划分代码,逻辑也不总是被划分的,这使得代码很难阅读、理解,最终也很难维护


按逻辑划分我的类是解决方法。你知道他们说什么“分而治之”

我认为分离表单代码的最好方法是使用UserControl


在我的例子中,当我有一个大类时,我使用region而不是partial类。

不是专业人士,但我的两分钱是:不要有一个大类。将大部分代码提取到其他类


你还将获得,你将能够使大多数方法
私有化
,从而减少智能感知的“噪音”

这里的口号似乎是“分而治之”:怀孕是万恶之源大类是万恶之源:)是的。但是我喜欢有一个脏房间,你没有打扫,而是把它藏在地毯下面。@Bryan一个能执行10000行代码的窗口窗体……我认为它很大!我同意这很重要。请参见下面ivowiblo的回答。。。重构时间到了。我认为仅仅应用MVP并不是一个完整的答案,我们可以应用这个概念并得到3个文件,一个用于视图(sample.designer文件),另一个用于控件(sample.cs文件),最后一个用于模型(model.cs)。这种模式和其他模式必须伴随着良好的类/组件设计。是的,这就是为什么我还建议为表单和控件创建一个内聚模型的原因。不管怎么说,你总是可以很糟糕地应用一个概念。