WinForms MenuStrip隔离以提高代码可维护性

时间:2010-06-25 19:53:38

标签: winforms code-metrics maintainability

在Windows窗体中,C#,. NET 3.5,VS2008 ...

从表单的其余部分中隔离MenuStrip(或任何复杂控件组)的代码及其子菜单项有什么好方法?

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

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

根据Code Metrics,表单违反了这些最佳做法:

  1. 太多的类耦合
  2. 代码行数太多
  3. 整体可维护性低
  4. 将MenuStrip与表单的其余部分隔离开来的可能解决方案:

    1. 将其装入UserControl
    2. 其他想法?

2 个答案:

答案 0 :(得分:0)

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

确保您的代码指标不会触及生成的代码,或者不关注自动生成代码中的错误指标。

答案 1 :(得分:0)

您可以禁用或过滤CodeMetrics,例如抓取* .Designer.cs吗?

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

为了减少Form.cs文件中的代码注入,请考虑更多的MVC方法,以便在设计器生成时,比如说private void button1_Click方法,将一些业务逻辑抽象到其他类的其他方法。因此,button1_Click不会移动您的所有文件,而是会调用InitiateMoveFileMethod( string source, string destination ),例如。