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

Aruba Cloud - Virtual Private Server VPS
0 głosów
158 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 Mentor (352,580 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 (158,200 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 687 wizyt
+1 głos
1 odpowiedź 228 wizyt
pytanie zadane 11 lutego 2022 w PHP przez ZnaQu Nowicjusz (130 p.)
0 głosów
3 odpowiedzi 628 wizyt
pytanie zadane 22 października 2019 w PHP przez Artek Stary wyjadacz (11,800 p.)

93,335 zapytań

142,330 odpowiedzi

322,414 komentarzy

62,669 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...