Чи ортодоксальне впровадження MVVM безглуздо? Я створюю нову програму, і я розглядав Windows Forms та WPF. Я вибрав WPF, оскільки він захищений від майбутнього і пропонує велику гнучкість. Менше коду та легше вносити суттєві зміни у ваш інтерфейс за допомогою XAML.
Оскільки вибір для WPF очевидний, я зрозумів, що я можу також пройти весь шлях, використовуючи MVVM як мою архітектуру додатків, оскільки він пропонує суміш, проблеми розділення та перевірку одиниць. Теоретично це здається прекрасним, як святий Грааль програмування інтерфейсу користувача. Ця коротка пригода; однак перетворився на справжній головний біль. Як і очікувалося на практиці, я виявляю, що я обміняв одну проблему на іншу. Я, як правило, нав’язливий програміст, оскільки хочу робити все правильно, щоб отримати правильні результати і, можливо, стати кращим програмістом. Шаблон MVVM просто зірвав мій тест на продуктивність і щойно перетворився на великий хакі!
Очевидним випадком є додавання підтримки для діалогового вікна Modal. Правильний спосіб - встановити діалогове вікно і прив’язати його до моделі перегляду. Змусити це працювати важко. Щоб отримати вигоду з шаблону MVVM, вам потрібно розподілити код у кількох місцях по шарах вашої програми. Ви також повинні використовувати езотеричні конструкції програмування, такі як шаблони та вирази lamba. Речі, які змушують дивитись на екран, чухаючи голову. Це робить технічне обслуговування та налагодження кошмаром, який чекає, як я нещодавно виявив. У мене було близько ящика, який працював нормально, доки я не отримав виняток, коли я вдруге викликав його, сказавши, що він не зможе знову показати діалогове вікно після його закриття. Мені довелося додати обробник подій для закриття функціональних можливостей у діалогове вікно, ще один у реалізації IDialogView і, нарешті, ще один у IDialogViewModel. Я думав, MVVM врятує нас від такого екстравагантного злому!
Є кілька людей із конкуруючими рішеннями цієї проблеми, і всі вони хаки і не забезпечують чистого, елегантного рішення, яке можна багаторазово використовувати. Більшість наборів інструментів MVVM перекривають діалоги, і коли вони звертаються до них, вони є просто вікнами попереджень, які не потребують користувальницьких інтерфейсів або моделей перегляду.
Я планую відмовитись від шаблону подання MVVM, принаймні його ортодоксальної реалізації. Що ти думаєш? Чи варто було б вам клопоту, якщо у вас вони були? Я просто некомпетентний програміст чи MVVM - це не те, що роздуто?