@katelx i @the real mucka - między innymi o to mi chodzi, że gdyby coś się zmieniło - zmiana będzie w jednym miejscu, a nie w bóg wie ilu
@karolinaa myślę jednak, że to coś w sobie ma tworzenie takiej metody. Może w tym wypadku to nie jest aż tak widoczne - ale jak pisałem pojawia się takich sytuacji pare i czasem to takie trywialne usuwanie cudzysłowiów (tak to sie odmienia?), jednak często to troszke większe operacja, ale nie urastająca do rozmiarów wartych klepania klas i pakietów
wiesz co.. przykład ciężko mi podać ale chodzi mi o sytuacje, w której np.. mam klase User i w nim mam jakąś metode - powiedzmy statyczne User.of(Data data) - czyli na podstawie jakiegos obiektu Data tworze usera. Może przydać się jakaś krótka metoda która coś sprawdza/wygładza/dostosowuje.
I tu wiem, że są dwa podejścia, widziałem kiedys prezentacje na ten temat na youtube chyba. Lepiej robić metody w modelu tzn np w klasie User
zrobic metode eat(Meal meal)
czy zrobic osobny UserService
i w nim eat(User user, Meal meal)
Stąd pytam - co sądzicie o wrzucaniu metod które "coś robią" bezpośrednio w klasy tj User, Item i tym podobne
@Shalom wiem, że powinienem zaplanować wcześniej i to zrobiłem. Wiem, że klasa powinna mieć odpowiedzialność za jedną rzecz. Ale gdzieś wyczytałem, że jak mam zrobić taki "helper-method" na 2-3 linijki to lepiej zrobic prywatną metode gdzies u dołu klasy niż cudować z budowaniem nazw dla nowych klas, pisania wyjaśnień, tworzenia pakietu itd..
Że powinienem wyekstrahować to gdzieś to wiem - stąd moje pytanie. Bo troche głupio robić klase:
public class SomethingParsingUtils { // i static lub @Service
public String deleteQuotes(String str) {
return str.replaceAll("\"", "");
}
}
Jest szansa, że się ona rozrośnie - ale jak duża, kto to wie? Może lepiej zostawić jedną private metodę i refactorować dopiero, gdy zajdzie potrzeba użycia tej metody w kilku innych miejscach. (tzn wydzielić do osobnej klasy)
Co do przykładu z HTTP - owszem, zrobiłbym jak piszesz. Ale chodzi mi tu o trywialne sprawy tj poprawa stringa, przekonwertowanie czegoś w jakiś specyficzny sposób z dziwnego stringa na inta/double i takie tam
Jeśli chodzi o testowanie - zgadzam się, że pewnie łatwiej byłoby przetestować metodę w jakiejś osobnej klasie niż w samym User. Tylko że tu znowu wracamy do pytania co według nas jest lepsze: nadawanie User'owi metod wykonujących na nim operacje(np eat Meal), czy robienie @Service
któremu bedziemy podawali jak napisałem - Usera i Meal jaki ma zjeść.
ps
wybaczcie ze odpisuje tak pozno, ale byłem cały dzień na wyjezdzie