Aktywne Wpisy
Panitsch +248
Pijcie ze mną kompocik, dzisiaj obchodzę #urodziny, wczoraj zostawiła mnie moja kobieta, bo biznes się zawalił i ostatnie miesiące musieliśmy żyć trochę skromniej, ale nadal godnie. Widocznie tej świni to nie wystarczało, gdyż po jej rzeczy przyjechał dziś nowy gach - trochę zrobiło mi się szkoda tego szczurka, bo widząc co robi ta wywłoka nadal bierze ją pod swój dach. Krzyż na drogę. Ja z racji moich 37 urodzin i tego,
Jak trzeba mieć zryty beret by wymagać dziewictwa od kobiety?
Odrzucenie każdej nie-dziewicy to zabranianie młodym kobietom bycia szczęśliwą, zakochaną, korzystania z życia i popełniania błędów.
Co innego szlauf mający 30 bolców w rok, a co innego dziewczyna która po prostu była w kilku związkach ale nie wypaliło.
Jeśli komuś nawet druga opcja przeszkadza to musi to być osoba strasznie zakompleksiona i zawistna oraz pozbawiona emocji, logiki, człowieczeństwa.
Znam prawiczków, którym nie
Odrzucenie każdej nie-dziewicy to zabranianie młodym kobietom bycia szczęśliwą, zakochaną, korzystania z życia i popełniania błędów.
Co innego szlauf mający 30 bolców w rok, a co innego dziewczyna która po prostu była w kilku związkach ale nie wypaliło.
Jeśli komuś nawet druga opcja przeszkadza to musi to być osoba strasznie zakompleksiona i zawistna oraz pozbawiona emocji, logiki, człowieczeństwa.
Znam prawiczków, którym nie
1.Dla każdej encji biznesowej musimy robić adekwatną encję bazodanową, mappera i repozytorium/dao co zwiększa ilość kodu i czas dowożenia projektu. Np. dla 5 encji jest to 10 dodatkowych klas (5 dla encji i 5 mapperów) a już dla 10 encji jest to 20 dodatkowych klas. Jak widać ilość tego dodatkowego kodu rośnie dość szybko.
2.Zmiana na innych sposób zapisu danych (np. z JPA na Mongo) jest czasochłonna co wynika z punktu 1. Jeśli nie mielibyśmy tego rozdzielenia na encje biznesowe i encje bazodanowe, to wystarczyłoby tylko pozmieniać dosłownie parę adnotacji (tak, tak wiem adnotacje nie są zbyt fajne, ale alternatyw jakoś nie widać za bardzo) i napisać repozytoria/dao. Załóżmy, że mamy te 10 encji czyli modyfikacja tych 10 encji + repo/dao vs 20 dodatkowych klas + repo/dao. Wybór wydaje się prosty.
3.Myślę, że do większości projektów wprowadzą to niepotrzebną złożoność i komplikacje, co utrudnia wejście do takiego projektu nowym osobą i utrzymywanie go.
Jestem przede wszystkim ciekaw z jakim podejściem spotykacie się w pracy. Zapraszam do dyskusji.
#java #programowanie #naukaprogramowania #programista15k
Z ciekawości spytam co to za gówniany ORM że wymaga takich rzeczy? Zasadniczo wszystkie te rzeczy się powinny automatycznie generować z klasy.
Oczywiście mając ogarnięty dobry micro ORM, mogę sobie zrobić tyle struktur ile potrzebuje mapowanych nawet na te samą tabele, bo niby czemu nie?
@Edelner: tylko jeśli masz miszmasz w kodzie. Jak masz clean/onion architecture i dobrze jest wszystko porozdzielane to ci się nie miesza wszystko bez sensu
@Krolik: no ale wtedy gdzie chcesz umieścić nietrywialną logikę? Potrzeba klasy do reprezentowania wyniku zapytania i klasy (lub funkcji, jeśli nie piszemy w Javie/C#) na zmapowanie tej klasy na obiekt domenowy. Jeśli generowałoby się to automatycznie to w sumie można używać wszędzie jednego modelu o czym w sumie jest
@Saly: Logikę się umieszcza jako osobny kod, a nie w strukturach danych. Struktura to tylko struktura - przechowuje informacje i ewentualie sposób mapowania jej na strukturę w bazie, aby orm potrafił ją odczytać / zapisać i tyle. Po cholerę pchać do takich struktur logikę?
Generalnie jak masz wątpliwości to wybierz to co jest prostsze w tej chwili. A dogmatystami DDD czy OOP nie
Jeden chce zmianę, a drugi za chiny ludowe nie wdroży żadnej nowej zmiany. Z twoim podejściem rozwiąż ten problem zakładając, że masz jedną działającą instancję (i nie dokładasz innych)
@Krolik: OP napisał, że są dwie klasy: encja i mapper. Pierwszą rozumiem jako głupią klasę bez dodatkowej logiki (ewentualnie jakieś podstawowe rzeczy typu adnotacje/automatyczne mapowania na podstawie typów)
@WyjmijKija: Ja nic nie napisałem o bałaganie czy mieszaniu tylko o dodatkowej pracy i ilości kodu.
@Sztuczny_Snieg: Jeśli zmienia się np. schemat bazy danych to w tym podejściu z oddzielnymi encjami, to muszę nanieść zmiany w encji
@Edelner: single responsibility principle, mówi to panu coś?
@Edelner: Nie o takiej logice pisałem. Oczywiście masz rację, że obiekt powinien być napisany tak aby nie dało się go wprowadzić w nieprawidłowy stan. Czyli walidacja argumentów w konstruktorze i najlepiej wszystkie pola final aby nie dało się obiektu zepsuć. Jak trzeba