Winforms Menustrip隔离以提高代码可维护性
-
30-09-2019 - |
题
在Windows表单中,C#,.NET 3.5,VS2008 ...
从我的其余表格中隔离Menustrip(或任何复杂的对照组)的代码(或任何复杂的对照组)以及子菜单项的好方法是什么?
例如,当我有一个带有许多菜单的Menustrip,并且每个菜单都有许多菜单项,所有菜单项都有单击事件时,将一吨代码播放到form.desinger.cs.cs文件和form.cs.cs中。文件。这在技术上并没有引起任何问题,而是感觉到很多东西都倾倒在一个地方(以及形式的其他所有内容)感到错误。
在我的整个项目上运行代码指标,表格被标记为具有任何项目文件中最差的可维护性索引。通常,我对了解代码指标工具的方向不太教条,但是在这种情况下,我完全同意。
根据代码指标,该表格违反了这些最佳实践:
- 课堂耦合太多
- 代码太多
- 总体低可维护性
将Menustrip与其他形式分离的可能解决方案:
- 将其塞入Usercontrol
- 其他想法?
解决方案
我认为您应该关注隔离业务逻辑与演示文稿逻辑的孤立逻辑,例如,在单击处理程序中不会放置太多代码,也不会为菜单项实现命令。
确保您的代码指标不会触摸生成的代码,也不会注意自动化代码中的错误指标。
其他提示
例如,您可以禁用或过滤codeMetrics,以免抓取 *.designer.cs吗?
如果没有,我将使用工厂类,以便您可以一行创建这些结构。这对此的偏低是它降低了设计师的功能。在工厂中,您可以根据模板字符串 +“ _filemenu”命名每个组件,以便在工厂构造函数中设置基本“名称”。
要减少您的form.cs文件中的代码,请考虑更多的MVC方法,以便在设计师生成时,说一个 private void button1_Click
方法,您将某些业务逻辑抽取到其他类的其他方法中。因此,而不是移动所有文件,而是 button1_Click
将会通知 InitiateMoveFileMethod( string source, string destination )
, , 例如。