【问题标题】:Which is the best and appropriate way to write the code in Winforms?在 Winforms 中编写代码的最佳方式是哪种?
【发布时间】:2010-05-06 05:29:36
【问题描述】:

编写代码的最佳方式是什么?

(1) 就像直接在button_click()事件中写代码一样。

(2) 制作我在button_click() 事件中编写的代码的函数,并在一个类中编写该函数,然后我应该在button_Click() 事件中调用该函数。就像它被称为three-tier approach 一样编写代码?

就像在button_Click() 事件中一样,我编写代码以将记录保存在csv file from datatable。所以我应该在button_Click() 事件中编写该代码,或者我应该创建一个新函数和一个新类并在其中编写该代码函数是新类并在button_Click() 事件中调用该函数。

这只是一个例子,但我说的是我的应用程序中编写的所有代码,即appropriate and best way to write the code,有什么好处?请注意,我在 Winforms 中使用 c# 编写代码。

【问题讨论】:

  • 请注意,模型和视图的解耦并不意味着您只需从事件处理程序方法中提取代码,并将完全相同的代码放在其他地方。一个额外的调用不会突然使它成为“MVC”甚至“三层”(尽管后者是关于不同的事情,真的)。您需要做的是将您指定为模型类的功能建模 - 以一种从model 角度和面向对象设计来看有意义的方式 - 然后根据需要从事件处理程序中使用该功能。
  • 还可以查看数据绑定INotifyPropertyChangedIBindingList/BindingList<T>。很多时候,在模型类上实现并通过绑定连接到 UI 的组合消除了完全编写事件处理程序的需要。

标签: c# winforms coding-style three-tier


【解决方案1】:

您应该在不同的类中使用单独的功能。您应该这样做,因为您将使代码可重用并在用户界面和应用程序逻辑之间建立良好的分离。像这样,您可以在不影响应用程序的其余部分的情况下更改 UI。

也看看MVC pattern,你会更好地理解整个想法。

我认为应该使用第一个选项的唯一情况是当它执行一些会影响 UI 的操作时,我仍然会在 Form 类中的单独函数中创建它。

如果它影响 UI,它应该在同一个类中,因为它是相关的,例如,如果它是刷新网格的代码,我会将它放在同一个 Form 类中的单独方法中,因为它可以用于里面不同的地方。因此,更改 UI 对应用程序没有影响,您只需让代码可重用和可维护。

【讨论】:

  • @Adrian Faciu,当需要更改 UI 如何影响应用程序的其余部分时,请澄清。
  • @Harikrishna 我已经编辑了我的帖子,希望现在更清楚了。
【解决方案2】:

这一切都取决于情况。

如果您要对表单进行更新,那么最好在表单中包含更新代码。但是,如果有很多处理,那么最好设计一个单独的类来处理这项工作。

这一切都取决于情况。

【讨论】:

    【解决方案3】:

    通常,您不需要事件处理程序中的任何逻辑,因为 GUI 倾向于提供冗余机制(上下文菜单、菜单栏、工具栏、加速键)来触发相同的命令,并且事件签名不兼容对于所有这些。那么问题就变成了你的常用函数应该放在 Form 类还是数据模型中。

    我经常从表单中的逻辑开始,然后根据需要将其重构为模型类。许多小型应用程序永远不会变得足够大,以至于需要多个类来实现可维护性。只要您避免代码重复(即复制+粘贴),那么以后如果您发现需要,重构将很简单。

    【讨论】:

      【解决方案4】:

      为工作开发课程总是好的。因为它使您的代码可重用,并且还实现了三层架构。好处是容易理解。
      重要的是,只有适当地开发课程才有用。在类中开发可以为您重用的方法。
      另一个好处是它隐藏了代码的复杂性。

      【讨论】:

      • 对不起,我不知道。只要在网上搜索...你可以得到很多有用的信息。
      【解决方案5】:

      向代码添加结构的一般方法有两种:自上而下和自下而上。自上而下的结构来自可能涉及正式或非正式过程和纯设计工件(如 UML 图或功能规范)的设计工作。自上而下过程的最终目标是在您的代码中创建类和接口,这些类和接口将提供适当的结构以使您的代码可维护。这可能发生在您编写代码之前,或者作为迭代的一部分,但想法是您首先创建结构,然后创建代码。

      自下而上的结构来自重构。例如,从单击按钮中的所有逻辑开始。当您添加与单击按钮执行相同操作的菜单项时,将按钮单击功能的代码移动到表单上的私有成员函数中。当您在应用程序的不同部分需要相同的功能时,请将您的私有成员函数使用的代码和状态变量封装到一个类中。

      我建议同时使用这两种方法。适合您情况的组合取决于开发团队(规模、位置、沟通能力)和应用程序的大小。一般来说,大型应用程序需要更多的自上而下,而在非常小的应用程序上,最少的自上而下设计就足够了。但始终应该有一些高层次的规划,即使对于一个小型应用程序也是如此。

      【讨论】:

        猜你喜欢
        • 2020-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-03
        • 1970-01-01
        • 2010-12-31
        • 2010-11-29
        相关资源
        最近更新 更多