Debo proporcionar métodos de descriptor de acceso / Captador de Incubadoras para el público/protegido de los componentes de un formulario?

StackOverflow https://stackoverflow.com/questions/5997

  •  08-06-2019
  •  | 
  •  

Pregunta

Si que tengo .Net Formulario con un componente/objeto, tal como un cuadro de texto que necesito para el acceso de los padres o de otra forma, obviamente, la necesidad de "actualizar" el modificador a este componente Interno o Público de nivel variable.

Ahora, si me estaban dando una variable pública de tipo int o string tipo, etc.en mi forma de clase I no lo pensamos dos veces sobre el uso de los Captadores y (tal vez) Incubadoras de todo esto, incluso si no hacen otra cosa que proporcionan acceso directo a la variable.

Sin embargo, el diseño para VS no parece aplicar tales métodos getter/setter para los objetos que son componentes de un formulario (y por lo tanto no cumple con la buena práctica de programación).

Entonces, la pregunta es;Con el fin de hacer "lo correcto" debo envolver tales VS diseñador de objetos o componentes en un Getter y/o Setter?

¿Fue útil?

Solución

"Sin embargo, el diseño para VS no parece aplicar tales métodos getter/setter para los objetos que son componentes de un formulario (y por lo tanto no cumple con la buena práctica de programación)."

Si te refieres a los controles que se está arrastrando y soltándolas en el formulario, estos están marcados como privados de los miembros de instancia y se agregan a la colección Controls del formulario.¿Por qué habría de ser de otro modo?Una forma podría tener cuarenta o cincuenta controles, sería algo innecesario y difícil de manejar para proporcionar un getter/setter para cada control en el formulario.El diseñador deja a usted para proporcionar acceso delegado a controles específicos a través público getter/setter.

El diseñador hace lo correcto aquí.

Otros consejos

La razón para la no aplicación de Getters y Setters para los componentes en una forma en la que creo es la causa de que no sería "Thread Safe" .Net objetos se supone que debe ser modificada sólo por la forma subproceso que creó, Si usted pone en getter y setter puede abrir por cualquier hilo.En cambio, supongamos que para implementar un delegado del sistema, donde los cambios a estos objetos se delegan en el hilo que creó y corrió allí.

Este es un clásico ejemplo de encapsulación en el diseño orientado a objetos.

Un Formulario es un objeto cuya responsabilidad es presentar la interfaz de usuario para el usuario y aceptar la entrada.La interfaz entre la Forma del objeto y de otras áreas del código debe ser orientada a datos de la interfaz, no de una interfaz que expone el interior de los detalles de la implementación de la Forma.El funcionamiento interno de la Forma (es decir, los controles) debería permanecer oculto desde cualquier consumo de código.

Una solución pensada probablemente provenía de los siguientes puntos de diseño:

  • Métodos públicos o propiedades de comportamiento (mostrar, ocultar, posición) o orientadas a datos (conjunto de datos, obtener datos, actualización de datos).
  • Todos los controladores de eventos implementado por la Forma que están envueltos en el hilo correspondiente delegación código para exigir la Forma de rosca-las reglas de ejecución.
  • Los controles podrían ser enlazado a datos de la estructura de datos subyacente (donde sea apropiado) para reducir el código.

Y que no es ni siquiera mencionar meta-desarrollo de cosas como las pruebas de unidad.

Yo siempre hago eso, y si usted es un MVP de diseño la creación de getter/setter para la vista de los componentes sería un requisito de diseño.

Yo no entiendo lo que quieres decir por "no cumplir con la buena práctica de programación".Microsoft viola mucho de las buenas prácticas de programación para hacer más fácil para crear cosas en Visual Studio (por la causa del rápido desarrollo de la aplicación) y no veo la falta de getters/setters para los controles como evidencia de la violación de cualquiera de estas buenas prácticas.

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