Question

Il est souvent nécessaire d’afficher un objet de domaine de différentes manières sur l’interface utilisateur; listes, résultats de recherche, pages de visualisation et d'édition, ainsi que dans les en-têtes, les pieds de page et les popups En général, vous disposez de plusieurs "vues" différentes. de l'objet de domaine, chacun avec différents champs affichés.

La plupart des conseils semblent être d’utiliser un DTO pour obtenir les données lorsque vous avez besoin d’un sous-ensemble ou d’un sur-ensemble. Il y a beaucoup de frais généraux liés à la maintenance des DTO. Est-ce une mauvaise approche que de simplement remplir les propriétés de l'objet de domaine requises pour chaque scénario? Par exemple, vous pouvez utiliser un profil pour indiquer les propriétés à inclure, par exemple:

service.GetDomainObjects (int listID, Profile.ListProfile); service.GetDomainObjects (string searchParam, Profile.SearchProfile);

Était-ce utile?

La solution

Pour moi, il s’agit là de l’objet de la surcharge: soit vous allez avoir un ensemble de classes différentes pour représenter vos DTO, soit vous allez avoir un ensemble de méthodes qui renvoient chacune le même objet de domaine mais avec différents champs "hydratés".

Voici quelques questions que je poserais pour vous aider à prendre la décision:

  • quels sont les frais généraux liés à l'hydratation de l'objet entier? La complexité ajoutée (objets DTO ou partiellement hydratés) en vaut-elle vraiment la peine?
  • quelqu'un d'autre va-t-il utiliser votre code? Vous ne devez pas confondre les gens avec des objets partiellement hydratés, les DTO peuvent être plus clairs quand les gens viennent entretenir votre code.

J'ai une légère préférence personnelle pour les DTO car je pense que la maintenance à long terme de votre système sera plus facile. Si vous êtes un groupe composé d'un seul homme ou s'il s'agit d'une application unique, je peux tout à fait comprendre que vous ne voulez pas introduire de classes supplémentaires qui encombreront votre code.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top