Récemment, dans une interview, l'une des questions était «Pourquoi utilisons-nous MVC? Je viens de répondre que c'est beaucoup plus proche de la façon dont de nombreux systèmes du monde réel le sont! Expliqué les avantages qu'il présente en matière de maintenabilité, d'évolutivité, etc.
Bien que je sache que le leur est un point valable, je doute toujours que ce soit la raison principale car (i) même si je décide de ne pas écrire de tests unitaires, MVC est un choix probable (ii) De nombreux systèmes GUI où les tests unitaires sont là ne le font pas suivez MVC.
La question est donc: «Le test unitaire est-il l'objectif principal du modèle MVC?
EDIT: Je suppose qu'ils mentionnent peut-être la facilité de développement piloté par les tests / l'écriture de tests NUnit. C'est parce que nous pouvons écrire des cas de test pour le modèle (à condition que la vue reflète exactement les changements d'état du modèle) - veuillez me corriger si je me trompe.
Réponses:
L'objectif principal serait la «séparation des préoccupations», car le modèle, la vue et le contrôleur ont tous des responsabilités distinctes.
L' auteur du document original Xerox PARC déclare que:
Si les tests unitaires étaient l'objectif principal, on pourrait facilement tester les vues unitaires. Un examen du paysage des projets / cadres de tests unitaires révélerait qu'il est tout à fait contraire à l'affirmation formulée. L'une consiste généralement à utiliser des tests d'intégration et fonctionnels pour tester la vue.
la source
À mon avis, la réponse est un non catégorique. C'était peut-être le principal avantage qui a été observé dans cette organisation spécifique, mais je n'appellerais pas cela «l'objectif principal».
Je suppose que ce ne serait pas si difficile d'implémenter MVC d'une manière, c'est incroyablement difficile à tester unitaire (diable - la façon dont je l'ai fait pour la première fois était à peine testable).
D'un autre côté, on pourrait dire que pratiquement n'importe quel modèle (à l'exclusion de choses comme Singleton) facilite les tests unitaires, car ils favorisent le plus souvent le découplage - mais est-ce leur «objectif principal»? À peine.
la source
MVC (tout comme la plupart des modèles de conception connus) était en cours avant que les tests unitaires ne soient connus. Le livre du GoF a été publié en 1994 - et ils ne faisaient que documenter les modèles qui étaient utilisés depuis des années (voire des décennies) auparavant. (Et il n'y est pas fait mention de tests unitaires.) À propos des tests unitaires, je ne peux pas localiser l'heure exacte à laquelle il est devenu "public" - je l'ai lu personnellement dans des articles liés à la programmation extrême et dans le premier livre XP est sorti en 1999.
Il est donc évident que les tests unitaires ne peuvent pas être l'objectif principal de l'invention / documentation des modèles - alors qu'il est juste de dire que les modèles, lorsqu'ils sont bien appliqués, facilitent considérablement les tests unitaires.
la source
Je pense que non, la facilité des tests unitaires est l'un des avantages, mais cela fait partie d'une collection d'avantages lors de l'utilisation de MVC avec les raisons que vous énumérez. Dire qu'il y a une seule raison principale d'utiliser MVC est une erreur. Il semble que la société en question ait choisi MVC pour faciliter les tests unitaires, c'est pourquoi ils pensent que c'est la principale raison. Personnellement, mes raisons d'utiliser MVC sont sa simplicité par rapport aux formulaires Web, ce qui facilite la conception et la maintenance, mais chaque individu / entreprise aura ses propres raisons d'utiliser n'importe quelle technologie.
la source
Dans le monde ASP.NET MVC, de nombreuses améliorations d'ASP.NET ont été incluses dans le cadre lui-même. L'objectif principal de ce modèle de conception est d'isoler la logique métier de l'interface utilisateur afin de se concentrer sur une meilleure maintenabilité, une testabilité améliorée et une structure plus propre pour l'application.
ASP.NET MVC possède certaines capacités qui en font la meilleure option pour choisir si vous avez besoin d'un ou plusieurs des éléments suivants:
• Un niveau élevé de contrôle sur le code HTML généré : contrairement aux formulaires Web, les vues dans ASP.NET MVC rendent le code HTML exactement comme vous le dites. Récemment, les formulaires Web ont été améliorés dans ce domaine, mais n'ont toujours pas le niveau de contrôle de MVC.
• Tests unitaires plus faciles : avec ASP.NET MVC, il est très facile de suivre des modèles de test tels que le développement piloté par les tests (TDD). En raison du cycle de vie des événements complexes dans les formulaires Web, en plus d'un cadre basé sur le contrôle, TDD est beaucoup plus facile avec MVC.
• Séparation des préoccupations : cela signifie que tous les aspects du système sont clairement séparés les uns des autres. En raison du modèle qu'elle implémente, une application MVC est divisée en parties distinctes et liées de manière lâche (modèle, vues et contrôleurs), ce qui facilite la maintenance.
Certains des autres avantages sont:
• Le modèle MVC lui-même facilite la gestion de la complexité en séparant clairement la fonctionnalité de l'application en trois parties principales, le modèle, la vue et le contrôleur.
• Les applications Web ASP.NET MVC n'utilisent pas l'état d'affichage ni les formulaires basés sur le serveur. Cela rend le framework MVC idéal pour les développeurs qui souhaitent un contrôle total sur le comportement d'une application. L'état d'affichage peut devenir très grand, ce qui est un problème pour les appareils comme les smartphones fonctionnant sur des réseaux lents (la transmission de toutes ces informations peut être très lente). Dans une page Web Forms, vous ne pouvez en avoir qu'un par page. C'est une restriction assez importante. Dans MVC, il n'y a pas une telle restriction, c'est-à-dire que vous pouvez avoir autant d'éléments que vous le souhaitez.
• ASP.NET MVC offre une meilleure prise en charge du développement piloté par les tests (TDD).
• ASP.NET MVC fonctionne bien pour les applications Web prises en charge par de grandes équipes de développeurs et pour les concepteurs Web qui ont besoin d'un degré élevé de contrôle sur le HTML. Traitement des demandes ASP.NET MVC
la source