Tworzenie DTO - jedno czy wiele?

Tworzenie DTO - jedno czy wiele?
OR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 18
0

Cześć
Mam ciekawą sytuację. Mam DTO który jest stworzony pod GETa i zamiera pola powiedzmy X,Y,Z. Teraz w przypadku PUTa chce zaktualizować A,B,C, natomiast w przypadku POSTa chce pola z GETa i PUTa + dodatkowe pola. Czy w takim przypadku stworzyć jedno DTO czy też stworzyć trzy DTO? Czy może tutaj też działa zasada w stylu Interface segregation principle?

KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5555
8

Jeśli chcesz tworzyć jedno uniwersalne DTO co do pola zgodne z Encją to już lepiej w ogóle nie tworzyć DTO tylko używać wszędzie Encji.
IHMO tworzenie DTO ma sens jeśli różni się od Encji, inaczej to jest korpo-sztuka dla korpo-sztuki

TL;DR
Lepiej utworzyć trzy DTO, tak by każde miało tylko te pola które są potrzebne i w w żadnym nie nadużywać nulli

Charles_Ray
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1914
2

Ja bym nawet tego DTO fizycznie nie nazywał tylko np. CosTamQuery i CreateCosTamCommand. W przypadku modyfikacji dedykowany obiekt zawierający tylko istotne pola, np. WithdrawMoneyCommand.

neves
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1114
2

Na pewno nie jedno, skoro mają różne pole. Co najwyżej mogą dziedzić wspólne pola z jakiegoś bazowego dto.

AreQrm
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Londyn
  • Postów: 873
0
  1. Uzasadnienie powyżej.
    W końcu 3 to magiczna liczba. ;-)
somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
1
ornek napisał(a):

Cześć
Mam ciekawą sytuację. Mam DTO który jest stworzony pod GETa i zamiera pola powiedzmy X,Y,Z. Teraz w przypadku PUTa chce zaktualizować A,B,C, natomiast w przypadku POSTa chce pola z GETa i PUTa + dodatkowe pola. Czy w takim przypadku stworzyć jedno DTO czy też stworzyć trzy DTO? Czy może tutaj też działa zasada w stylu Interface segregation principle?

Tu nie chodzi o ISP ale o SRP. Każda klasa powinna mieć jeden powód do zmiany, a więc zmiana struktury zapisu nie może zmieniać struktury odczytu.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.