Recuerdo haber aprendido VB4 y arrastrar un botón a un formulario, hacer doble clic en ese botón y escribir código en el controlador de eventos con el que acababa de ser bendecido mágicamente. Viniendo de QBASIC Me encantó la "V" en "VB", el diseñador visual fue literalmente lo mejor desde el pan rebanado.
Por supuesto, podrías hacer todo eso programáticamente, pero la magia de la "V" era tan atractiva que no podías evitar arrastrar ese botón. Nos animaron a tomar esa ruta.
Pero hace unos años, comencé a aprender sobre C # y el marco .net y me fascinó la forma en que todo lo que creía saber acababa de salir por la ventana. Hay mucha magia en VB6 que se revela completamente en .net: tome los constructores y el InitializeComponents
método, por ejemplo. En este último, encontrará todas las instancias de control que ha arrastrado desde la caja de herramientas, todos los eventos que ha registrado y las propiedades que ha establecido en el diseñador.
Y eso está bien ... supongo. Es solo que siento que no soy "dueño" de lo que está sucediendo, este código que solo puedo modificar a través del diseñador me molesta muchísimo. Cada vez que copia un botón que dice "Ok" de un formulario a otro (a veces junto con su hermano "Cancelar"), en realidad está duplicando el código, y eso es un pecado, ¿no? SECO, no te repitas, dice el Papa .
Dejando de lado las religiones y las escuelas de pensamiento, con toda objetividad, ¿no deberíamos derivar formas de las formas básicas en su lugar, y tener el botón "Ok" (y todos sus amigos) vivir en la forma base? Algo así como FormBase
de donde se deriva a DialogFormBase
; todas las clases creadas en muy poco tiempo ... escribiendo código. Los botones se crean dependiendo de cómo se instancia la clase (es decir, un argumento enum constructor determina qué botones se crearán), los controles se colocan dentro de una disposición de paneles divididos y paneles de diseño de flujo, inyectados en el formulario comoContent
que encaja en el panel de contenido principal. ¿No es esto lo que ASP.net hace con páginas maestras y marcadores de posición de contenido? Derivaría un formulario cuando necesito una nueva "página maestra", pero esta nueva "página maestra" aún se deriva de una clase de formulario base, por lo que las imágenes son consistentes en toda la aplicación.
Para mí, eso es mucho más reutilización de código que cualquier otra cosa que haya hecho con el diseñador en WinForms, y ni siquiera fue difícil, y el código no está abarrotado con un método de 200 líneas sobre el que no tengo control, puedo pon comentarios donde me gusta, un diseñador no los sobrescribirá. Supongo que es solo una cuestión de patrones y arquitectura, que es lo que me trajo a este enlace: el mejor diseño para formularios de Windows que compartirá una funcionalidad común , donde me di cuenta de que estaba en lo cierto, excepto la respuesta allí, sugiere exactamente lo que soy haciendo, pero está aconsejando contra la herencia de formularios debido a consideraciones de diseño. Esa es la parte que no entiendo .debido a consideraciones de estructura de código, especialmente en lo que respecta a la herencia de forma y control, que no veo ninguna razón para evitar, aparte de que rompe el diseñador .
No todos podemos ser flojos, entonces, ¿qué parte me estoy perdiendo?