Является ли ортодоксальная реализация MVVM бессмысленной? Я создаю новое приложение, и я рассматривал Windows Forms и WPF. Я выбрал WPF, потому что это будущее и предлагает большую гибкость. Существует меньше кода и проще внести существенные изменения в пользовательский интерфейс, используя XAML.
Поскольку выбор для WPF очевиден, я подумал, что я могу пройти весь путь, используя MVVM в качестве моей архитектуры приложения, поскольку он предлагает совместимость, разделение и тестируемость блоков. Теоретически, это кажется красивым, как святой Грааль программирования пользовательского интерфейса. Это краткое приключение; однако, превратилась в настоящую головную боль. Как и ожидалось на практике, я обнаружил, что Ive торговал одной проблемой для другой. Я склонен быть навязчивым программистом в том, что я хочу делать все правильно, чтобы я мог получить правильные результаты и, возможно, стать лучшим программистом. Шаблон MVVM просто провалил мой тест на производительность и только что превратился в большой взломанный хак!
Очевидным примером является добавление поддержки диалогового окна Modal. Правильный способ - установить диалоговое окно и привязать его к модели представления. Это трудно. Чтобы воспользоваться шаблоном MVVM, вам необходимо распространять код в нескольких местах по всем слоям приложения. Вы также должны использовать эзотерические конструкторы программирования, такие как шаблоны и выражения lamba. Материал, который заставляет вас смотреть на экран, царапая голову. Это делает техническое обслуживание и отладку кошмара, ожидающего того, что я обнаружил недавно. У меня была хорошая работа, пока я не получил исключение во второй раз, когда я его вызвал, заявив, что он не сможет снова отобразить диалоговое окно после его закрытия. Мне пришлось добавить обработчик событий для функции закрытия в диалоговое окно, еще один в реализации IDialogView и, наконец, еще один в IDialogViewModel. Я думал, что MVVM спасет нас от такого экстравагантного хакера!
Есть несколько человек с конкурирующими решениями этой проблемы, и все они хаки и не обеспечивают чистого, легко многоразового, элегантного решения. Большинство инструментов MVVM затушевывают диалоговые окна, и когда они обращаются к ним, они представляют собой только предупреждающие поля, которые не требуют специальных интерфейсов или моделей просмотра.
Я планирую отказаться от шаблона просмотра MVVM, по крайней мере, его ортодоксальной реализации. Как вы думаете? Неужели это было для вас проблемой, если бы у вас было? Я просто некомпетентный программист или MVVM не то, что он раздувал?