1

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

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

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

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

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

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

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

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

2 回答 2

0

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

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

于 2010-06-25T19:59:50.533 回答
0

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

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

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

于 2010-06-25T20:03:59.753 回答