Après 2 ans, je continue de me battre avec MVVM comme méthode pratique de production de logiciels fonctionnels. Dans certains cas, c'est génial. J'ai fait une application multithread qui contrôlait une petite chaîne de montage qui aurait été un cauchemar sans concepts MVVM. Une abstraction de la chaîne de montage physique était presque une évidence.
Cependant, ma carrière tourne principalement autour des applications internes de l'entreprise - formaliser et optimiser les opérations d'une entreprise. Dans de telles applications, il y a généralement une activité commerciale autour du CRUD et des opérations composées. Dans les LOB, mes modèles de vue finissent par être des collections très simples de fonctions d'encapsuleur d'une ligne des méthodes de classe affaires et finissent par compliquer la tâche la plus simple, comme afficher une boîte de message ou ouvrir une fenêtre. Est-ce que personne d'autre ne trouve ça étrange quand les gens entrent dans de longues descriptions d '«injection de dépendance» et de «fournisseurs de messagerie» pour un appel Window.ShowDialog qui existe depuis des décennies? Combien y a-t-il d'autres questions sur le débordement de pile qui demandent des conseils pour des tâches qui étaient extrêmement simples dans Winforms?
Ne vous méprenez pas - je reçois MVVM et comment cela pourrait être inestimable pour les grandes équipes effectuant le développement horizontal d'un progiciel sous emballage rétractable et commercialisé. Les tests unitaires des modèles de vue pourraient économiser des millions en évitant un mauvais bogue RTM et les développeurs d'interfaces dédiés pourraient donner une expérience riche. Mais lorsque le coût du redéploiement est minime et que tout ce que l'entreprise se soucie de payer est un logiciel de travail simple, pourquoi devrais-je passer du temps à tester un vm "wrapper" simple alors que ma logique métier est déjà testée à l'unité? Combien de temps l'entreprise va-t-elle vraiment me permettre de passer sur de jolies animations et des jeux de couleurs? Y a-t-il quelque chose à faire pour un développeur junior (retrouver un bogue dans une fonctionnalité de sauvegarde était en train de regarder "Save_Click",
Certes, j'aime vraiment la liaison de données de WPF. Pour en profiter, j'ai défini le contexte de données sur la fenêtre elle-même, où il a accès à la classe affaires ainsi qu'à toute autre propriété observable. Oui, j'enfreins presque toutes les "règles" MVVM. Mais au moins, j'ai un code événementiel simple qui est facile à lire ET je profite de la nouvelle liaison de données et de la validation. Le problème est dans les concepteurs - que je n'utilise pas beaucoup mais j'espère maintenant qu'il sera mieux intégré en 2012 - le concepteur montre les centaines de propriétés d'une fenêtre et de ses classes de base.
Pour ceux qui peuvent se rapporter, pouvez-vous m'indiquer des ressources, des livres ou même simplement des changements de perspective qui ont rendu cela plus facile à avaler. Je vais donner une autre chance à MVVM, mais la dernière fois, je me suis senti assez stupide de m'inquiéter de l'injection de dépendance juste pour montrer une boîte de message à partir d'une machine virtuelle, je n'avais pas l'intention de tester les unités. Même si j'ai fait des tests unitaires, obtenons-nous vraiment plus de qualité en échangeant des tests d'exécution pour les erreurs de temps de compilation de ces redoutables applications "étroitement couplées"?
Je me rends compte qu'une réponse est de simplement rester dans les formes de victoire. Mais en tant que l'un des derniers partisans de WebForms (j'ai la même critique de la tendance du développement Web), je me sentais un peu comme un dinosaure comme c'est le cas lorsque j'ai découvert qu'il n'y avait plus de WebForms dans les pistes de certification Microsoft. Aller de l'avant est la seule option, même si je ne l'aime pas.