¿Es inútil la implementación ortodoxa de MVVM? Estoy creando una nueva aplicación y consideré Windows Forms y WPF. Elegí WPF porque está preparado para el futuro y ofrece mucha flexibilidad. Hay menos código y es más fácil realizar cambios significativos en la interfaz de usuario con XAML.
Dado que la elección de WPF es obvia, pensé que también podría ir hasta el final utilizando MVVM como mi arquitectura de aplicación, ya que ofrece capacidad de mezcla, problemas de separación y capacidad de prueba de la unidad. En teoría, parece hermoso como el santo grial de la programación de UI. Esta breve aventura; sin embargo, se ha convertido en un verdadero dolor de cabeza. Como era de esperar en la práctica, descubrí que cambié un problema por otro. Tiendo a ser un programador obsesivo en el sentido de que quiero hacer las cosas de la manera correcta para poder obtener los resultados correctos y posiblemente convertirme en un mejor programador. ¡El patrón MVVM acaba de suspender mi prueba de productividad y acaba de convertirse en un gran truco asqueroso!
El caso claro es agregar soporte para un cuadro de diálogo modal. La forma correcta es colocar un cuadro de diálogo y vincularlo a un modelo de vista. Hacer que esto funcione es difícil. Para beneficiarse del patrón MVVM, debe distribuir código en varios lugares a lo largo de las capas de su aplicación. También debe usar construcciones de programación esotéricas como plantillas y expresiones lamba. Cosas que te hacen mirar la pantalla rascándote la cabeza. Esto hace que el mantenimiento y la depuración sean una pesadilla esperando suceder, como descubrí recientemente. Tuve un cuadro de aproximadamente funcionando bien hasta que obtuve una excepción la segunda vez que lo invoqué, diciendo que no podía mostrar el cuadro de diálogo nuevamente una vez que se cerró. Tuve que agregar un controlador de eventos para la funcionalidad de cierre a la ventana de diálogo, otro en la implementación de IDialogView del mismo y finalmente otro en el IDialogViewModel. ¡Pensé que MVVM nos salvaría de una piratería tan extravagante!
Hay varias personas por ahí con soluciones competitivas a este problema y todos son trucos y no brindan una solución limpia, fácil de reutilizar y elegante. La mayoría de los kits de herramientas de MVVM pasan por alto los diálogos y cuando los abordan, son solo cuadros de alerta que no requieren interfaces personalizadas o modelos de vista.
Estoy planeando renunciar al patrón de vista MVVM, al menos su implementación ortodoxa. ¿Qué piensas? ¿Ha valido la pena la molestia para usted si tuvo alguno? ¿Soy solo un programador incompetente o MVVM no es lo que se promociona?