Je construis une application assez volumineuse qui utilise le modèle de conception DAO/DTO pour obtenir des données à partir d'une base de données. Dans l'application, un DTO particulier est devenu la «structure de données de base» en ce sens qu'il est référencé tout au long du projet. Je me demande si c'est une bonne pratique d'avoir ce DTO si profondément intégré dans le projet, ou devrais-je avoir une sorte de couche de conversion où je convertis les DTO en objets non-DTO?Est-ce une bonne pratique d'avoir des objets DTO profondément intégrés dans le code?
Je peux voir les raisons pour et contre avoir cette couche de conversion. Par exemple, si nous avons la couche de conversion, alors: 1) Des changements drastiques dans le DTO peuvent provoquer des erreurs dans tout le projet, ce qui fait que la couche de conversion isole l'erreur à un seul point du code. 2) Je suis capable d'ajouter une logique supplémentaire à la structure de données de base qui ne peut pas être ajoutée au DTO car elle est générée automatiquement.
Cependant, je vois des inconvénients à avoir une couche de conversion aussi: 1) Le code de conversion DTO doit être maintenu cohérent à chaque changement de DTO. Cela ajoute une autre étape que le programmeur doit être conscient de et est donc plus sujette aux erreurs. 2) Cela conduit également à la duplication de code puisque, pour la plupart, vous copiez les accesseurs du DTO.
Quelle est la meilleure route à faire? DTOs partout ou une couche de conversion? Quelqu'un peut-il me guider dans la bonne direction?
Merci pour la réponse duffymo. J'apprécie vraiment cela. –
Montrez votre appréciation en votant la réponse et en l'acceptant, alors. Voilà comment fonctionne ce site. Je préférerais ça à ta gratitude. – duffymo
Il a seulement un représentant de 1, donc il ne peut pas upvote. Et vous devriez lui donner une chance d'attendre d'autres réponses avant d'en accepter une. À tout le moins, vous pourriez expliquer comment accepter des réponses au lieu de le déchirer. Voilà comment fonctionne ce site - lisez la FAQ :) – BenV