Kiedy i jak nazywamy klasy?

0

Cześć
mam pytanie odnośnie nazewnictwa klas. Np jak mam klase uzytkownika Entity jak powinienem nazwać UserBean, UserDao czy jakoś inaczej? Kiedy piszemy DAO a kiedy Bean?

0

Nie bardzo rozumiem pytanie, bo DAO i Bean niewiele maja wspólnego. DAO to obiekt dostarczający interfejs dostępu do persystentych danych (np. od bazy danych) i służy do wyciągania obiektów ze źródła danych. Bean w sensie JavaBeans to po prostu obiekt DTO - struktura na dane. Bean w sensie Springa to generyczny obiekt zarządzany przez Springa.

0

Nazwa powinna wskazywać co dana klasa robi, np. jeżeli korzystasz z repo które wyszukuje uzytkownika to np. UserFinder.
Jeżeli tworzysz Beana User to tak na prawdę tworzysz obiekt User, który jest wykorzystywany więc po co słowo Bean w nazwie..?
Moim zdaniem nie powinno się w ogóle używać słowa bean, dao ponieważ przemycasz w nazwie dane techniczne.
Polecam książkę czysty kod

1

Cytat z książki "Czysty kod":
"Nazwy Klas
Klasy i obiekty powinny być rzeczownikami lub wyrażeniami rzeczownikowymi, takimi jak Customer,
WikiPage, Account czy też AddressParser. Należy unikać w nazwach klas słów takich jak Manager,
Processor, Data lub Info. Nazwy klas nie powinny być czasownikami."

1

co jest bardzo dobre bo:

  • nazwy klas odzwierciedlają prawdziwe rzeczy z danej dziedziny (a nie są wymyślonymi abstrakcjami jak Dao czy szczególami technicznymi jak Bean)

  • jest mniejszy narzut poznawczy jak się to czyta (łatwiej czytać kod, gdzie są proste klasy User czy File niż UserDao, UserSrao, UserKakao, FileBean, FileCoffeeBean, FileRoastedCoffeeBean)

0

@gg @LukeJL @Zimny Krawiec mam wrażenie że mylicie tutaj dwa różne rodzaje klas.
Jedne to klasy należące do application logic i do infrastruktury projektu -> dao, dto, kontrolery itd. I tutaj jak najbardziej ma sens informacja że taki obiekt jest kontrolerem, taki jest DAO a inny jest jeszcze czymś innym. Wymyślanie dla tych obiektów nazw z życia wziętych to głupi pomysł bo te obiekty NIE MAJĄ odzwierciedlenia w domenie! Takie nazwy będą wyssane z palca i mylące.

Drugie to klasy domenowe, należące do business logic aplikacji. Tutaj sytuacja jest zupełnie odwrotna - tutaj należy nazywać klasy zgodnie z ich przeznaczeniem domenowym, bo takie nazwy dla nich istnieją, szczególnie jeśli piszemy zgodnie z OOP / DDD.

Jest jeszcze jeden błąd, zwykle stosowany wśród obiektów domenowych - tzw smerfowa konwencja nazewnicza. Smerfy każdy chyba zna - był Smerf Ważniak, Smerf Pracuś, Smerf Laluś, Smerf.... I tak też niektórzy nazywają klasy domenowe - dodając generyczny prefix który nie niesie żadnej informacji. I nagle mamy MarsRoverWhee, MarsRoverCamera, MarsRoverEngine, MarsRoverBatteries... ;]

1 użytkowników online, w tym zalogowanych: 0, gości: 1