Ist eine orthodoxe MVVM-Implementierung sinnlos? Ich erstelle eine neue Anwendung und habe Windows Forms und WPF in Betracht gezogen. Ich habe mich für WPF entschieden, weil es zukunftssicher ist und viel Flexibilität bietet. Es gibt weniger Code und es ist einfacher, mithilfe von XAML wesentliche Änderungen an Ihrer Benutzeroberfläche vorzunehmen.
Da die Wahl für WPF offensichtlich ist, habe ich mir gedacht, dass ich MVVM genauso gut als meine Anwendungsarchitektur verwenden kann, da es Mischbarkeit, Trennungsprobleme und Testbarkeit von Einheiten bietet. Theoretisch scheint es schön wie der heilige Gral der UI-Programmierung. Dieses kurze Abenteuer; hat sich jedoch zu echten Kopfschmerzen entwickelt. Wie in der Praxis erwartet, habe ich festgestellt, dass ich ein Problem gegen ein anderes getauscht habe. Ich neige dazu, ein besessener Programmierer zu sein, weil ich die Dinge richtig machen möchte, damit ich die richtigen Ergebnisse erzielen und möglicherweise ein besserer Programmierer werden kann. Das MVVM-Muster hat meinen Produktivitätstest gerade nicht bestanden und ist gerade zu einem großen Glücksfall geworden!
Das klare Beispiel ist das Hinzufügen von Unterstützung für ein modales Dialogfeld. Der richtige Weg ist, ein Dialogfeld einzurichten und es an ein Ansichtsmodell zu binden. Es ist schwierig, dies zum Laufen zu bringen. Um vom MVVM-Muster zu profitieren, müssen Sie Code an mehreren Stellen in den Ebenen Ihrer Anwendung verteilen. Sie müssen auch esoterische Programmierkonstrukte wie Vorlagen und Lamba-Ausdrücke verwenden. Dinge, bei denen Sie auf den Bildschirm starren und sich am Kopf kratzen. Dies macht Wartung und Debugging zu einem Albtraum, der darauf wartet, passiert zu werden, wie ich kürzlich herausgefunden habe. Ich hatte ein About-Feld, das einwandfrei funktionierte, bis ich beim zweiten Aufruf eine Ausnahme bekam, die besagte, dass das Dialogfeld nach dem Schließen nicht mehr angezeigt werden konnte. Ich musste dem Dialogfenster einen Ereignishandler für die Schließfunktion hinzufügen. eine weitere in der IDialogView-Implementierung und schließlich eine weitere im IDialogViewModel. Ich dachte, MVVM würde uns vor solch extravagantem Hackery retten!
Es gibt mehrere Leute mit konkurrierenden Lösungen für dieses Problem und sie sind alle Hacks und bieten keine saubere, leicht wiederverwendbare, elegante Lösung. Die meisten MVVM-Toolkits beschönigen Dialoge, und wenn sie diese ansprechen, handelt es sich lediglich um Warnfelder, für die keine benutzerdefinierten Schnittstellen oder Ansichtsmodelle erforderlich sind.
Ich habe vor, das MVVM-Ansichtsmuster aufzugeben, zumindest seine orthodoxe Implementierung. Was denken Sie? Hat sich die Mühe für Sie gelohnt, wenn Sie welche hatten? Bin ich nur ein inkompetenter Programmierer oder ist MVVM nicht das, worauf es ankommt?