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

WinForms MenuStrip隔离以提高代码可维护性,winforms,code-metrics,maintainability,Winforms,Code Metrics,Maintainability,在Windows窗体、C、.NET3.5、VS2008中 将MenuStrip或任何复杂控制组及其子菜单项的代码与表单的其余部分隔离开来的好方法是什么 例如,当我有一个包含多个菜单的MenuStrip,并且每个菜单都有多个菜单项,这些菜单项都有单击事件时,大量的代码被注入Form.Desinger.cs文件和Form.cs文件。这在技术上并没有造成任何问题,只是觉得把这么多的东西和表单中的其他东西一起放在一个地方是不对的 在我的整个项目上运行代码度量,表单被标记为具有任何项目文件中最差的可维护性

在Windows窗体、C、.NET3.5、VS2008中

将MenuStrip或任何复杂控制组及其子菜单项的代码与表单的其余部分隔离开来的好方法是什么

例如,当我有一个包含多个菜单的MenuStrip,并且每个菜单都有多个菜单项,这些菜单项都有单击事件时,大量的代码被注入Form.Desinger.cs文件和Form.cs文件。这在技术上并没有造成任何问题,只是觉得把这么多的东西和表单中的其他东西一起放在一个地方是不对的

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

根据代码度量,表单违反了以下最佳实践:

类耦合过多 代码行太多 总体可维护性低 将MenuStrip与表单其余部分隔离的可能解决方案:

将其填充到用户控件中 其他想法?
我认为您应该注意将业务逻辑与表示逻辑隔离开来,例如,不要在单击处理程序中放置太多代码或实现菜单项的命令


确保您的代码度量不会触及生成的代码,或者不会注意自动生成代码中的错误度量。

例如,您可以禁用或过滤代码度量以获取*.Designer.cs吗

如果没有,我将使用工厂类,这样您就可以在一行中创建这些结构。缺点是,它减少了设计器的功能。例如,在工厂中,您可以根据模板字符串+\u FileMenu命名每个组件,以便在工厂构造函数中设置基本名称


在您的.Cs文件中减少代码SPEW,考虑更多的MVC方法,这样当设计器生成一个私有无效的ButoNo1CKIT方法时,您就可以将一些业务逻辑抽象为其他类的其他方法。因此,按钮1\u单击将调用InitiateMoveFileMethod字符串源、字符串目标,而不是移动所有文件。

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