【问题标题】:WinForms MenuStrip Isolation to improve Code MaintainabilityWinForms MenuStrip 隔离以提高代码可维护性
【发布时间】:2011-03-08 10:52:24
【问题描述】:

在 Windows 窗体、C#、.NET 3.5、VS2008...

有什么好的方法可以将 MenuStrip(或任何复杂的控件组)的代码及其子菜单项与我的表单的其余部分隔离开来?

例如,当我有一个带有多个菜单的 MenuStrip 并且每个菜单都有多个菜单项时,这些菜单项都有点击事件,大量代码会被注入到 Form.Desinger.cs 文件和Form.cs 文件。这在技术上不会造成任何问题,但将这么多东西都倾倒在一个地方(连同表单中的所有其他东西)只是感觉不对。

在我的整个项目上运行代码度量,该表单被标记为具有任何项目文件中最差的可维护性索引。通常,我不会太教条地注意代码度量工具的方向,但在这种情况下,我完全同意。

根据 Code Metrics,该表单违反了以下最佳实践:

  1. 类耦合过多
  2. 代码行数过多
  3. 整体可维护性低

将 MenuStrip 与表单的其余部分隔离的可能解决方案:

  1. 将其填充到用户控件中
  2. 其他想法?

【问题讨论】:

  • 将 [GeneratedCode] 属性放在 InitializeComponent 方法上。

标签: winforms code-metrics maintainability


【解决方案1】:

我认为您应该注意将业务逻辑与表示逻辑隔离开来,例如不要在点击处理程序中放置太多代码或为菜单项实现命令。

确保您的代码指标不会触及生成的代码或不注意自动生成代码中的不良指标。

【讨论】:

    【解决方案2】:

    例如,您能否禁用或过滤您的 CodeMetrics 以防止抓取 *.Designer.cs?

    如果没有,我会使用 Factory 类,以便您可以在一行中创建这些结构。不利的一面是它减少了设计器的功能。在工厂中,您可以根据模板字符串+“_FileMenu”为每个组件命名,例如,您可以在工厂构造函数中设置基本“名称”。

    为了减少 Form.cs 文件中的代码溢出,请考虑更多的 MVC 方法,这样当设计者生成 private void button1_Click 方法时,您可以将一些业务逻辑抽象为其他类的其他方法。因此,button1_Click 将调用 InitiateMoveFileMethod( string source, string destination ),而不是移动所有文件。

    【讨论】:

      猜你喜欢
      • 2011-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-19
      • 1970-01-01
      • 1970-01-01
      • 2013-03-31
      • 1970-01-01
      相关资源
      最近更新 更多