• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

DDD / OOP - konsturowanie klasy, która ma zarówno części crudowe, jak i złożoną logikę

VPS Starter Arubacloud
0 głosów
127 wizyt
pytanie zadane 27 czerwca 2022 w PHP przez XiverKi Bywalec (2,050 p.)

Wybrałem Jave, ale równie dobrze może być to każdy inny język.
Od jakiegoś czasu staram się programować z wykorzystaniem zasad dotyczących wysokiej kohezji, która jest ważna w świecie obiektowym, ale oczywiście nie tylko.
Zastanawiam się co zrobić w przypadku, kiedy w requeście do mojej aplikacji wpadają dane dotyczące jakiegoś bytu np. standardowo produkt.

Przykład wymyślony:
Dostaje takie dane jak nazw, opis ale dodatkowo cena, ilość sztuk, a także magazyn, w którym znajduje się wskazany produkt.
Wymaganie biznesowe jest takie, że nie można dodać produktu do magazynu jeżeli takowy istnieje na magazynie i ma tam sztuk więcej niż N. 
No i zakładamy, że ta weryfikacji sztuk na magazynie jest jakąś tam logiką, która można być weryfikowana w obiekcie.

Natomiast co z danymi takimi jak nazwa i opis? Nie chce ich wsadzać do tego obiektu ponieważ nie będą one używane, ich zadaniem jest jedynie wejść do bazy i koniec.
Zakładając, że używam jakiegoś ORM'a to stworzy mi on klase, która bedzie miała w sobie zarówno nazwe, jak i te pola wymagane przez logikę.

komentarz 27 czerwca 2022 przez adrian17 Ekspert (346,900 p.)

Natomiast co z danymi takimi jak nazwa i opis?

Coś mi tu nie pasuje, czemu przy uzupełnianiu stanu magazynu trzeba by w ogóle jakkolwiek dotykać nazwę i opis? Jedyne co robimy to bierzemy produkt o jakimś ID i zwiększamy jego stanu magazynowy o N.

1 odpowiedź

0 głosów
odpowiedź 27 czerwca 2022 przez mokrowski Mędrzec (156,220 p.)
No to masz decyzję co do poświęcenia 2 pól aby utrzymać jednolity sposób odwoływania się do obiektu vs "elegancja i normalizacja danych". W bardzo wielu przypadkach, w logice biznesowej, poświęca się normalizację na korzyść jasnego (i pozbawionego wariantów) definiowania klasy/obiektu. Wbrew pozorom, kontrolowana i utrzymana na niskim poziomie nadmiarowość, zwiększa czytelność kodu. Pomyśl jakie piekło tworzył byś np. wybierając rozwiązanie różnicujące instancjonowanie obiektu z/bez nazwy i/lub innych pól. Ile powstało by kodu i "drabin if'ów". Tu trzeba rozsądnie podejść: "jak jest produkt, to się nazywa i ma opis a pojęcie pół-produkt, nie istnieje w domenie" :)

Podobne pytania

0 głosów
3 odpowiedzi 446 wizyt
+1 głos
1 odpowiedź 195 wizyt
pytanie zadane 11 lutego 2022 w PHP przez ZnaQu Nowicjusz (130 p.)
0 głosów
3 odpowiedzi 410 wizyt
pytanie zadane 22 października 2019 w PHP przez Artek Stary wyjadacz (11,800 p.)

92,768 zapytań

141,692 odpowiedzi

320,510 komentarzy

62,106 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...