Question

De nombreuses applications ne font rien pour séparer l'interface de la logique du domaine. Je programmer depuis quelques décennies et j'ai travaillé dans plus d'une douzaine de magasins et aucun d'entre eux n'a pris aucune mesure de séparation de l'interface de la logique du domaine. C'est-à-dire qu'ils utilisent tous le Vue autonome motif. Cela va à l'encontre de toute la sagesse que j'ai lue sur la séparation des préoccupations. Lorsque l'utilisateur doit choisir un élément dans un ensemble d'éléments, cette sélection est directement liée à une boîte combinée plutôt qu'à une abstraction.

Un énorme inconvénient avec tout ce couplage est qu'il est impossible d'écrire des tests unitaires. Pour exécuter n'importe quelle unité, les tests de l'application dans son intégralité doivent d'abord être chargés. Dans mon esprit, le cas d'utilisation doit être encapsulé dans une abstraction qui peut plus tard avoir une base de données et une interface attachée. Ce type de séparation rendrait la mise en œuvre des tests unitaires triviaux par comparaison.

Étant donné que la boutique moyenne a sa logique d'interface et de domaine étroitement couplée, comment refactoriser la séparation? Autrement dit, une réécriture complète est hors de la table. Ce dont je parle, c'est de faire une proposition de gestion sur la façon de créer des objets de domaine (quoi qu'il en soit) qui vivent isolément de la base de données et de l'interface. En d'autres termes, il serait utile de pouvoir expliquer comment ce concept de présentation de l'utilisateur avec un choix (quelque chose qui est maintenant représenté par des combos sur les formes) et de voir comment une méthodologie / cadre / modèle représente cela au sens abstrait et comment cette abstraction est ensuite liée à l'interface. Cela rendrait le remplacement des combos par des boîtes à liste rien de plus qu'un léger détail.

Quelles sont les bonnes façons d'extraire les abstractions (cas d'utilisation du domaine) des formulaires? Des bonnes ressources en ligne? Ma boutique actuelle est sur .NET, bien que je sois intéressé par les idées de toute plate-forme de développement. En fin de compte, ce que je dois fournir est un exemple concret (code) de la façon dont cela pourrait être accompli.

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
scroll top