Wpis z mikrobloga

Dlaczego programiści Javy tak bardzo boja się większych klas? Przykładowo jest jedna klasa mająca 500 lini, serwis który obsługiwał jedno zapytanie restowe. Gość z pracy podzieli ta klasę na 10 innych i nazywa to refaktorem. Porobił klasy typu Helper, jakieś factory, inner Classy powyrzucał do zewnętrzych. I teraz żeby przejrzeć co się dzieje w kodzie muszę mieć 10 klas pootwieranych zamiast jednej. Reszta osób w zespole ma podobne podejście, tak jakby płacili im od klasy, może maja jakieś inne umowy niż ja ( ͡° ʖ̯ ͡°). Zwróciłem na to uwagę w pr to ktoś skomentował ze wg niego tak jest czyściej i trzeba się wystrzegać tak dużych klas. I to zmergowali.
Jeszcze drugi masochizm to robienie package per kilka klas, wiec takie coś jak package private klasy nie istnieje dla nich w Javie. Bo jak to zrobić jak w package trzymasz po 3 klasy. Ja mam podejście ze domyślnie mam jeden package per moduł mavenowy - No chyba ze będzie bardzo dobry powód żeby zrobić osobny package który nie będzie osobnym modułem ale rzadko się to zdarza.
#java #programowanie #programista15k
  • 9
@PoteznyMagWody: To wszystko zależy. Pakiety pozwalają w miarę logicznie odseparować poszczególne elementy kodu, logiki itd. Package private nie jest idealnym rozwiązaniem, bo potem kończymy z pakietami, które mają po 30 klas i to się naprawdę ciężko czyta. Chyba, że Twoje moduły mavenowe są małe po tych właśnie 10-15 klas maksymalnie.

Co do tej konkretnej klasy - mi się 500 lini już słabo czyta. Wolałbym to mieć podzielone. Mam wrażenie, że ta
@PoteznyMagWody: zdecydowanie sie z Tobą zgadzam. Był u mnie jeden co dzielił klasy ike sie da, czytanie kodu bylo masakryczne. Moje korpo ma taki jakby wlasny framework, gdzie niektóre klasy serwisów/managerów mają ponad 10k linii. To oczywiscie przesada, ale jak dla mnie 1-3k linii to ideał do czytania kodu.

@Kris10 ale że co?
@PoteznyMagWody: To zależy ( ͡° ͜ʖ ͡°) Z drugiej strony niektórzy programiści nie mogą zrozumieć konceptu abstrakcji i poziomu szczegółowości. Jak mam przepis na X to mogę zacząć od poznania głównych kroków i dopiero w razie potrzeby wejść w detale każdego z nich. Jak mam odraz detale to już nie mam wyboru - muszę zawszę czytać wszystko. Przełóż to sobie na kod.
@NieBendePrasowac: Serwis i manager zwykle kończy się 8 tysięcznikiem. Dla mnie 1-2k linijek w klasie enkapsulujacej logikę biznesową np. Order, albo XDocument albo coś tam innego może być. Klasy gdzie jest duża modularność i jest stosowane DI albo są usecasem czy jakimś commandem w cqrs to jak najkrótsze. Kod "frameworkowy" whatever ale lepiej pisać ładnie bo potem ciężko rozszyfrować co ta refleksja miała robić itd.
@PoteznyMagWody: ano dlatego, że łatwiej po pół roku zrozumieć logikę klasy/metody, która jest krótka i zwięzła niż rozwlekła i robiąca wiele rzeczy.
Jeśli np. parsujesz dokument XML, potem wyciągasz z niego jakieś dane, przeliczasz je itd. to lepiej
zrobić osobne klasy, które będą mogły być wykorzystywane w wielu miejscach i na dodatek będą się zajmować określonymi funkcjami.
W klasie 500-linijkowej nie ma nic złego, ale należy dążyć do minimalnej liczby kodu