• 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ę

Object Storage Arubacloud
0 głosów
119 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 (344,860 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 (155,460 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 427 wizyt
+1 głos
1 odpowiedź 183 wizyt
pytanie zadane 11 lutego 2022 w PHP przez ZnaQu Nowicjusz (130 p.)
0 głosów
3 odpowiedzi 370 wizyt
pytanie zadane 22 października 2019 w PHP przez Artek Stary wyjadacz (11,800 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...