Wpf: modello di progettazione MVVM basato su evento

5

Sono un programmatore principiante e ho lavorato a un'app WPF per diversi mesi e ho faticato ad implementare qualsiasi cosa in MVVM a causa dei limiti di tempo necessari per imparare così ho codificato il mio programma l'unico modo per sapere come: con il codice dietro, accoppiamento stretto, e un sacco di codice spaghetti.

Il mio programma è cresciuto in oltre 20.000 righe di codice disordinato (ma funzionante) che è principalmente guidato dagli eventi. L'app che sto costruendo sarà probabilmente utilizzata e continuerà a essere sviluppata per gli anni a venire, ma sarò l'unica a lavorare sul codice.

Tuttavia, ora che ho il tempo di iniziare a imparare MVVM, mi chiedo quanto sia utile seguire lo schema MVVM. Sto considerando di refactoring il mio codice nel pattern MVVM ma tutto sembra 100x difficile da fare con poca documentazione. Con l'utilizzo di code behind e tight coupling, posso fare in modo che l'interfaccia utente faccia esattamente quello che voglio e sembra che possa essere codificato molto più velocemente attraverso i metodi basati su eventi.

Quanto è importante seguire il modello di progettazione MVVM per le app WPF, specialmente nel lungo periodo? Pensi che sia una buona idea per me investire il mio tempo per riprogettare questa app e seguire un pattern MVVM?

    
posta user2525395 28.08.2014 - 23:38
fonte

1 risposta

12

Sembra che ti sei trovato nella situazione di apprendimento perfetta . Attualmente la tua applicazione funziona e sono sicuro che tu abbia molta familiarità con tutte le 20 righe di codice. Fare cambiamenti non è poi così difficile e, finora, non sembra esserci alcun motivo per cambiare il tuo approccio allo sviluppo.

Sei un cowboy! E essere un cowboy è molto divertente!

Ma essere un cowboy è un sacco di lavoro, e anche i migliori cowboy a corto di energie dopo un po '(mi dispiace per le metafore miste).

Nella domanda hai menzionato che l'app verrà utilizzata e mantenuta per gli anni a venire. Quelle 20k linee sicuramente aumenteranno, e con ogni nuova caratteristica aggiunta, e ogni nuovo bug che schiacci, noterai che diventa sempre più difficile scrivere codice senza rompere le funzionalità esistenti. Questo è un inferno di spaghetti strettamente accoppiato!

MVVM come modello incoraggia gli sviluppatori ad associare liberamente il loro codice. Nel mondo MVVM mantieni il tuo Modello separato dallo stato di visualizzazione (Visualizza modello) e visualizza la logica (Visualizza). Questo richiede un lavoro un po 'più attivo, ma i benefici a valle sono molti:

  • L'unità di test del tuo modello è più facile. Nessuna vista di cui preoccuparsi.
  • Test di integrazione del tuo View Model è un gioco da ragazzi
  • Poiché la tua M, VM e V sono sezioni distinte di codice, modificarne una ha una probabilità prossima allo 0% di causare regressioni negli altri.
  • E ci sono almeno altri 7 motivi.

Ma la ragione più importante per passare a MVVM su CBV (Cowboy View) è questa: tu sei umano. Mentre gli umani sono in realtà abbastanza bravi a creare modelli mentali di cose complesse come il software, farlo è uno sforzo molto drenante. E tenere traccia del software che cambia frequentemente e in continua crescita è una ricetta per la malattia mentale.

Siamo sacchi di carne imperfetti. Ma non preoccupatevi, perché siamo anche organizzati sacchi di carne imperfetti.

Organizzando il tuo codice in classi con responsabilità singole (ad esempio, un ViewModel) ora puoi lavorare su sottoinsiemi della tua applicazione senza dover caricare il tuo modello mentale dell'intera applicazione. Il tuo cervello ti ringrazierà per questo!

Ma non credermi sulla parola. Come ho detto all'inizio di questa pseudo-rant: sei in una situazione di apprendimento perfetta . Hai fatto un errore classico (non c'è vergogna in questo) e sarai in giro abbastanza a lungo da permetterti di raggiungerti.

Passa a MVVM ora, se vuoi. O no. Ad ogni modo, alla fine imparerai perché è uno schema utile.

La mia raccomandazione: cerca di mantenere i tuoi spaghetti da cowboy il più a lungo possibile. Il modo migliore per imparare è commettere errori. Quindi fai i tuoi grandi presto e spesso!

Buon divertimento

    
risposta data 29.08.2014 - 00:57
fonte

Leggi altre domande sui tag