Pregunta

En Windows Forms, C #, .NET 3.5, VS2008 ...

¿Qué es una buena manera de aislar el código de un MenuStrip (o cualquier grupo de control compleja), y de los elementos del menú infantil, desde el resto de mi forma?

Por ejemplo, cuando tengo un MenuStrip con una serie de menús y cada menú tiene una serie de elementos de menú, que todos tienen eventos de clic, una tonelada de código se arrojó en tanto el archivo y también el Form.Desinger.cs Form.cs archivo. Esto no causa ningún problema técnico, pero sólo se siente mal tener tanto material descargado todo en un solo lugar (junto con todo lo demás en la forma).

Al ejecutar el métricas de código en toda mi proyecto, la forma se marca como tener el peor índice de mantenibilidad de cualquier archivo de proyecto. Normalmente, no sería demasiado dogmático en prestar atención a la dirección de la herramienta Código de métricas, pero en este caso estoy totalmente de acuerdo.

De acuerdo con el Código de métricas, la forma viole estas mejores prácticas:

  1. El exceso de acoplamiento de clase
  2. Demasiado muchas líneas de código
  3. En general baja capacidad de mantenimiento

soluciones posible aislar el MenuStrip del resto de la forma:

  1. materia en un control de usuario
  2. Otras ideas?
¿Fue útil?

Solución

Creo que se debe tener cuidado acerca de la lógica de negocios aislado de la lógica de presentación, por ejemplo, no pone demasiado código de clic o manipuladores de implementar comandos de elementos de menú.

Get que sus métricas de código no toca código generado o no, preste atención a los malos indicadores en el código generado automáticamente.

Otros consejos

Can deshabilita o filtrar los CodeMetrics de agarrar * .Designer.cs, por ejemplo?

Si no es así, me gustaría utilizar una clase de fábrica para que pueda crear estas estructuras en una sola línea. El lado negativo de esto, es que se reduce la funcionalidad del diseñador. En la fábrica, usted podría nombrar cada componente basado en una cadena de plantilla + "_FileMenu", por ejemplo, por lo que se podía ajustar la base de "nombre" en el constructor de fábrica.

Para reducir spew código en el archivo de Form.cs, considerar más de un enfoque MVC, de manera que cuando el diseñador genera, por ejemplo un método private void button1_Click, se resumen algunos lógica de negocio a otros métodos de otras clases. Así que en lugar de mover todos sus archivos, button1_Click llamará InitiateMoveFileMethod( string source, string destination ), por ejemplo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top