在Windows窗体中,C#,. NET 3.5,VS2008 ...
从表单的其余部分中隔离MenuStrip(或任何复杂控件组)的代码及其子菜单项有什么好方法?
例如,当我有一个带有多个菜单的MenuStrip并且每个菜单都有许多菜单项(都有点击事件)时,会在Form.Desinger.cs文件和同时注入大量代码。 Form.cs文件。这在技术上并没有造成任何问题,但是在一个地方(以及表格中的其他所有内容)将这么多东西都倾倒在一起感觉是错误的。
在我的整个项目中运行代码度量标准,表单被标记为具有任何项目文件中最差的可维护性索引。通常情况下,我不会过于教诲注意Code Metrics工具的方向,但在这种情况下我完全同意。
根据Code Metrics,表单违反了这些最佳做法:
将MenuStrip与表单的其余部分隔离开来的可能解决方案:
答案 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 )
,例如。