L'implementazione MVVM ortodossa è inutile? Sto creando una nuova applicazione e ho preso in considerazione Windows Form e WPF. Ho scelto WPF perché è a prova di futuro e offre molta flessibilità. C'è meno codice e più facile apportare modifiche significative all'interfaccia utente utilizzando XAML.MVVM è inutile?
Dato che la scelta per WPF è ovvia, ho pensato che potrei anche andare fino in fondo usando MVVM come architettura della mia applicazione poiché offre sfumabilità, problemi di separazione e testabilità dell'unità. In teoria, sembra bello come il Santo Graal della programmazione dell'interfaccia utente. Questa breve avventura; tuttavia, si è trasformato in un vero mal di testa. Come previsto nella pratica, sto scoprendo che ho scambiato un problema con un altro. Tendo ad essere un programmatore ossessivo in quanto voglio fare le cose nel modo giusto così da ottenere i risultati giusti e possibilmente diventare un programmatore migliore. Il pattern MVVM ha appena fallito il test sulla produttività e si è appena trasformato in un grande hacker!
Il caso chiaro al punto è l'aggiunta del supporto per una finestra di dialogo Modale. Il modo corretto è di creare una finestra di dialogo e legarla a un modello di vista. Ottenere questo a lavorare è difficile. Per beneficiare del pattern MVVM, è necessario distribuire il codice in più punti all'interno dei livelli dell'applicazione. Devi anche usare costrutti di programmazione esoterici come i modelli e le espressioni di lamba. Cose che ti fanno fissare lo schermo grattandoti la testa. Ciò rende la manutenzione e il debug di un incubo in attesa di accadere come ho scoperto di recente. Avevo a circa un box funzionante fino a quando non ho ottenuto un'eccezione la seconda volta che l'ho invocato, dicendo che non poteva mostrare di nuovo la finestra di dialogo una volta chiusa. Ho dovuto aggiungere un gestore di eventi per la funzionalità close alla finestra di dialogo, un altro nell'implementazione di IDialogView e infine un altro in IDialogViewModel. Pensavo che MVVM ci avrebbe salvati da uno stravagante spettacolo!
Ci sono molte persone là fuori con soluzioni in competizione per questo problema e sono tutti hack e non forniscono una soluzione elegante, facilmente riutilizzabile ed elegante. La maggior parte degli strumenti MVVM nasconde le finestre di dialogo e quando le affrontano, sono solo caselle di avviso che non richiedono interfacce personalizzate o modelli di visualizzazione.
Sto pensando di rinunciare al modello di visualizzazione MVVM, almeno la sua implementazione ortodossa. Cosa ne pensi? È valsa la pena per te se ne avessi? Sono solo un programmatore incompetente o MVVM non è ciò che è pubblicizzato?
Ho sempre messo in dubbio se MVVM è o meno di ingegneria. Domanda interessante –
Pattern come MVVM e MVC sembrano overengineering, fino a quando non è necessario eseguire alcune modifiche o modificare un componente. La prima volta che devi farlo, tutta la cerimonia * si ripaga da sola. * –
Se sai perché lo stai facendo, MVC e MVVM sono abbastanza semplici e diretti. Se hai fatto qualcosa di difficile da capire e/o chiaramente violato il SoC o altri principi, è chiaramente l'ipogeo. Riepilogo: se lo rendi semplice, non sarà eccessivamente ingegnerizzato e non sarà complicato neanche. – Venemo