【问题标题】:Managing a big WinForm code管理大型 WinForm 代码
【发布时间】:2012-06-13 16:53:13
【问题描述】:

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

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

【问题讨论】:

  • @Bryan 一个可以执行 10000 行代码的 windows 窗体...我觉得它很大!
  • 我同意这很大。请参阅下面的 ivowiblo 的答案...重构的时间。

标签: c# winforms visual-studio-2010


【解决方案1】:

我的回答是“我不”。如果您需要在一个类(在这种情况下是一个表单)中有很多代码,这通常意味着您的类正在做很多事情,您需要减少它的耦合度。实现这一点的一个好方法是使用一种 MVC 或 MVP 模式形式将逻辑放在另一个地方,并使用 UserControls,这样您就可以在不同的控件中拥有不同的功能(使用它们的控制器或演示者,取决于您是否实现 MVC或 MVP)。分而治之。

【讨论】:

  • 我认为仅应用 MVP 并不是一个完整的答案,我们可以应用不好的这个概念并获得 3 个文件,一个用于查看(sample.designer 文件)另一个用于控制(sample.cs 文件)和模型的最后一个(model.cs)。这种模式和其他模式必须伴随着良好的类/组件设计。
  • 是的,这就是为什么我还建议为表单和控件创建一个内聚模型。不管怎样,你总是可以把一个概念应用得很糟糕。
【解决方案2】:

我不认为我是专家,但是曾经我们遇到过类似的问题,主要形式并没有停止成长。

解决方案只是 OOP,创建未附加且可重用的类,它们可以位于具有内部可见性的同一命名空间中。

例如,您有一个 ComparisionForm.Menu,看起来可以与 ComparisionForm 中的主代码分离。

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

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

【讨论】:

  • 这里的口号似乎是“分而治之”:P
【解决方案3】:

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

在我的例子中,当我有一个大类时,我使用区域而不是部分类。

【讨论】:

  • 地区是万恶之源
  • 大班是万恶之源 :)
  • 是的。但这就像有一个肮脏的房间,而不是打扫它,你把它藏在地毯下面。
【解决方案4】:

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

您还将获得,您将能够使用private 的大部分方法,从而减少 Intellisense “噪音”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多