Aunque nunca he entregado nada usando Smalltalk, mi breve tiempo jugando con él definitivamente ha dejado su huella. La única forma de describir la experiencia es MVC como debe ser. Esencialmente, todo el trabajo pesado para su aplicación se realiza en los objetos comerciales (o modelo de dominio si así lo desea). Los controles estándar están vinculados a los objetos comerciales de alguna manera. Por ejemplo, un cuadro de texto se asigna al campo de un objeto (el campo en sí es un objeto, por lo que es fácil de hacer). Un botón se asignaría a un método. Todo esto se hace con una API muy simple y natural. No tenemos que pensar en vincular objetos, etc. Simplemente funciona.
Sin embargo, en muchos lenguajes y API más nuevos, se ve obligado a pensar desde afuera hacia adentro. Primero con C ++ y MFC, y ahora con C # y WPF, Microsoft ha logrado que su mundo de desarrolladores se enganche en los constructores de GUI donde construye su aplicación implementando controladores de eventos . El desarrollo de Java Swing no es tan diferente, solo usted está escribiendo el código para instanciar los controles en el formulario usted mismo. Para algunos proyectos, puede que nunca haya un modelo de dominio, solo controladores de eventos. He estado dentro y alrededor de este modelo durante la mayor parte de mi carrera.
Cada forma te obliga a pensar de manera diferente. Con el enfoque Smalltalk, su dominio es inteligente mientras que su GUI es tonta. Con el enfoque predeterminado de VisualStudio, su GUI es inteligente mientras que su modelo de dominio (si existe) es bastante anémico.
Muchos desarrolladores con los que trabajo ven valor en el enfoque Smalltalk e intentan calzar ese enfoque en el entorno VisualStudio. WPF tiene algunas características de enlace dinámico que lo hacen posible; Pero hay limitaciones. Inevitablemente, parte del código que pertenece al modelo de dominio termina en las clases de GUI.
Entonces, ¿de qué manera diseñas / desarrollas tu código? ¿Por qué?
- GUI primero. La interacción del usuario es primordial.
- Dominio primero. Necesito asegurarme de que el sistema sea correcto antes de ponerle una IU.
Hay pros y contras para cualquier enfoque. El modelo de dominio encaja allí con catedrales de cristal y pastel en el cielo. GUI encaja allí con rápido y sucio (a veces realmente sucio).
Y para una ventaja adicional: ¿cómo se asegura de que el código sea mantenible?