保持主表格课程的最佳实践

时间:2009-02-21 20:07:11

标签: c#

我目前有一个主窗体,它有一个标签控件和3个数据网格(DevExpress xtragrid)。与常规按钮组合框...我会说主窗体中方法的2/3 rds与自定义网格或其相关事件处理程序以处理数据输入有关。这使得主表单代码变得越来越大。

主表单的代码长度是多少?

如果需要,我该如何移动代码?我目前正在考虑为每个网格创建一个用户控件并将其转储到那里。

3 个答案:

答案 0 :(得分:3)

我在我的商店中构建了相当数量的应用程序,并试图通过一堆特定于控件的代码来阻止主要表单。相反,我会将行为和状态设置封装到一些常用的可重用用户控件中,并将这些内容粘贴到用户控件的文件中。

我没有以主要形式拍摄的神奇数字,而是我会使用'我为什么要把它放在这里?'测试。如果我不能提出一个很好的理由,为什么我想把代码放在主窗体中,我会避​​免它。否则,正如你所提到的,主要形式开始增长,管理一切变得非常痛苦。

我喜欢把我的胶水代码(事件处理程序的东西等)与主表单本身分开。

至少,我会利用一些区域将代码分成逻辑分组的块。当然,很多人讨厌#region / #endregion结构,但是我几乎都记得按键,所以这对我来说不是问题。我喜欢使用它们只是因为它很好地组织了一些东西并在VS中很好地崩溃了。

简而言之,除非我说服自己属于那里,否则我不会在主要表格中添加任何内容。有很多好的模式,当使用时,有助于避免否则会发展的大堆积。我回顾了我职业生涯早期的一个文件,这个文件长达10K行......绝对荒谬!

无论如何,这是我的两分钱。

有一个好的!

答案 1 :(得分:0)

与任何一个班级一样,拥有超过150行是一个迹象表明事情已经发生了可怕的错误。相同的面向对象原则适用于与您的应用程序中的其他任何位置相关的UI。

班级应该承担一项责任。

答案 2 :(得分:0)

很难想出一个数字。总的来说,我同意前两张海报,一切都与责任有关。

问问自己,为网格1定制行为的代码与网格2有什么关系?

主表格的责任是什么?最近我订阅了MVP设计模式(MVC也很好)。在此模式中,您的主要形式是演示者或ui层。它应该负责提供数据并接受用户输入。

如果没有看到您的代码,我只能猜测什么是最佳行动方案。但我同意你的感受,即每个网格及其自定义代码应该存在于不同的控件中。也许主表单的责任应该是仅将数据传递给正确的控件并将来自控件的请求传递回控制器/演示者。每个控件都有责任理解传递给它的数据,并相应地显示它。

附件是一个示例MVP实现。 http://www.c-sharpcorner.com/UploadFile/rmcochran/PassiveView01262008091652AM/PassiveView.aspx