Jestem młodszym programistą wśród seniorów i mam duże problemy ze zrozumieniem ich sposobu myślenia i rozumowania.
Czytam DDD ( Domain-Driven Design ) i nie rozumiem, dlaczego musimy tworzyć tak wiele klas. Jeśli zastosujemy tę metodę projektowania oprogramowania, otrzymamy 20-30 klas, które można zastąpić maksymalnie dwoma plikami i 3-4 funkcjami. Tak, może być bałagan, ale jest o wiele łatwiejszy w utrzymaniu i czytelny.
Ilekroć chcę zobaczyć, co robi jakiś rodzaj EntityTransformationServiceImpl
, muszę śledzić wiele klas, interfejsów, ich wywołań funkcji, konstruktorów, ich tworzenia i tak dalej.
Prosta matematyka:
- 60 linii fałszywego kodu w porównaniu z 10 klasami X 10 (powiedzmy, że mamy zupełnie inną taką logikę) = 600 linii niechlujnego kodu w porównaniu do 100 klas + więcej do zawinięcia i zarządzania nimi; nie zapomnij dodać zastrzyku zależności.
- Czytanie 600 wierszy niechlujnego kodu = jeden dzień
- 100 zajęć = tydzień, wciąż zapomnij, który z nich robi co, kiedy
Wszyscy mówią, że jest łatwy w utrzymaniu, ale po co? Za każdym razem, gdy dodajesz nową funkcjonalność, dodajesz pięć kolejnych klas z fabrykami, jednostkami, usługami i wartościami. Wydaje mi się, że ten rodzaj kodu porusza się znacznie wolniej niż nieporządny kod.
Powiedzmy, że jeśli napiszesz niechlujny kod 50K LOC w ciągu jednego miesiąca, sprawa DDD wymaga wielu recenzji i zmian (nie mam nic przeciwko testom w obu przypadkach). Jeden prosty dodatek może zająć tydzień, jeśli nie więcej.
W ciągu jednego roku piszesz dużo niechlujnego kodu, a nawet możesz wielokrotnie go przepisywać, ale w stylu DDD wciąż nie masz wystarczającej liczby funkcji, aby konkurować z niechlujnym kodem.
Proszę wytłumacz. Dlaczego potrzebujemy tego stylu DDD i wielu wzorów?
UPD 1 : Otrzymałem tak wiele świetnych odpowiedzi, czy możecie gdzieś dodać komentarz lub edytować swoją odpowiedź za pomocą linku do listy lektur (nie jestem pewien, od czego zacząć, DDD, wzorce projektowe, UML, kod ukończenia, refaktoryzacja, Pragmatic,. .. tylu dobrych książek), oczywiście z sekwencją, abym mógł zacząć rozumieć i stać się starszym, jak niektórzy z was.