Una volta ho avviato un progetto MVVM / WPF, che alla fine è stato creato e distribuito, e per questo ho studiato molto il Caliburn.Micro MVVM Framework. Il fatto è: ho finito con non usando Caliburn.Micro per questo, e ho finito per implementare alcuni concetti MVVM (in particolare, solo le classi ViewModelBase
e RoutedCommand
).
Ora mi è stato assegnato un progetto un po 'più grande sulla stessa falsariga: una "applicazione desktop offline per client Rich per utente singolo", per così dire, e ho deciso di utilizzare Caliburn.Micro. Ed è qui che inizia il mio "problema".
Ho letto questo famoso post sul blog , il cui titolo dice che "Se stai usando MVVM allora hai bisogno di un framework", che:
"Trying to do something like MVVM without a framework is a huge amount of work. Tons of duplicate code, reinventing the wheel, and retraining people to think differently.
At least with a framework you avoid the duplicate code and hopefully don’t have to reinvent the wheel – allowing you to focus on retraining people. The retraining part is generally unavoidable, but a framework provides plumbing code and structure, making the process easier."
Sarei d'accordo sulla prima lettura ma la mia effettiva esperienza con Caliburn.Micro (CM) nella mia applicazione attuale è di ignoranza e disorientamento. Cioè, il quadro non ha reso il processo più semplice, anzi. Leggendo gli esempi sempre ripetitivi forniti da Rob Eisenberg nella documentazione piuttosto (troppo) informale e cercando di dedurre i modelli di utilizzo dai campioni forniti involontariamente e le loro relazioni di classe e interfaccia completamente indirette, in cui le cose sembrano essere progettate per funzionare basato sugli effetti collaterali, sembra umanamente impossibile a meno che tu non sia un genio stagionato (mi dispiace per lo sproloquio, ma immagino tu sappia cosa intendo).
Per non parlare del fatto che uno scenario sopra-banale sembra coinvolgere contenitori IoC, che è qualcosa con cui non ho mai lavorato, e che sembrano risolvere un problema che potrei non avere nemmeno . Non mi va di passare più ore di progetto a imparare quelle cose invece di pensare al mio problema e ai domini delle applicazioni. Volevo solo una banana, ma CM mi ha dato un gorilla (IoC) con un cestino di banane.
Ora sto pensando di tornare al mio framework MVVM homespun - composto solo da una manciata di classi specifiche MVVM che voglio realmente implementare - vorrei almeno dare a CM una possibilità, nel caso stia perdendo qualcosa qui, o semplicemente facendo le cose "nel modo sbagliato" per pura inesperienza e ignoranza. E quindi la domanda è:
There are widespread consensus that "frameworks make things easier and more natural", but if I happen to be experiencing quite the opposite, does this mean that I shouldn't use the framework, or that I am trying to learn it the wrong way? Is there a clue that I shouldn't even be using a framework in the first place? Or is there some "right" way to figure out how to use CM for simple MVVM development?