klasy modeli - javadocs, hashCode(), equals()

0

Cześć wszystkim,
Od przeszło tygodnia mam trochę wolnego i postanowiłem zapchać githuba kilkoma klasami. Piszę sobie klasy modeli dla przykładowej DB - Northwind. Wykorzystuję do tego Hibernate.
Mam kilka pytań odnośnie tego, bo chcę, żeby mój kod wyglądał, troszkę lepiej niż na juniora przystało:

  • uzupełniacie javadocs w klasach modeli? Jeśli tak, to jakie "at"-ki najczęściej stosujecie poza @Author?
  • czy warto dodawać do modeli hashCode i equals, nawet jesli jest to zwykła, przykładowa aplikacja? Czy uzupełniać to za każdym razem, bo taka jest dobra praktyka, a może coś robię nadto?

Pytania kieruję przede wszystkim do bardziej doświadczonych kolegów.

Pozdrawiam.

0
  1. Same modele encji to trochę mało
  2. Nie zawsze warto nadpisywać equalsa i hashCode
    3.Nie pisze się generalnie javadoców :)
1

U mnie w projektach z reguły nie korzystamy z javadoc, chyba, że są to serwisy, które uderzają do szyny lub systemów zewnętrznych.
Javadoc w klasach modelowych bym sobie odpuścił.

Co do metody equals i hashCode to polecam implementować, ponieważ metoda equals odziedziczona z klasy Object zachowuje się jak zwykłe porównanie obiektów za pomocą ==, czyli jeżeli będziesz miał obiekty, które będą miały te same właściwości, ale będą to dwa odrębne obiekty to metoda equals zwróci false, ponieważ referencje do nich będą inne.

1

Moim zdaniem @author jest akurat szkodliwe. Fajnie jest przez pierwsze parę miesięcy. Później okazuje się że wyznaczony autor nie zna 80% klasy bo było tyle zmian a ludzie ciągle chodzą do niego i pytają. Nikt też nie zmieni tego na swoją, żeby nie przypisywać sobie pracy itd. Jeżeli faktycznie potrzebujesz dowiedzieć się kto coś robił, to w IDE włączasz adnotacje z VCS i widzisz.
Generalnie to najlepiej napisać ktrótką notkę opisującą klasę i tyle.

hashCode i equals nadpisujesz tylko jeżeli tego potrzebujesz. W przypadku takich narzędzi jak hibernate czy JPA, istnieje specjalny haczyk. Przy standardowym generowaniu, brany jest pod uwagę id. Takiego id nie masz przy zapisie, a masz chwilę po zapisie. Oba obiekty są wtedy różne i np. często używany HashSet będzie działał źle.

1

Nadpisywanie equals i hashCode nie powinno byc w encjach naduzywane, i developer powinien potrafic rozróżnic sytuacje w której potrzebuje nadpisania.
W przypadku aplikacji z ktorymi pracuje ostatnio , nadpisywanie equals i hashCode jest rzadkoscia, rzadko pracuje na encjach ktore sa detached a głownie wtedy mozna zauwazyc problemy zwiazane z nienadpisaniem tych metod. a na pewno napisywanie ich wszedzie to spora przesada.

0

Super! Dziękuję za odpowiedzi. Rozwialiście moje wątpliwości. Biorę się do klepania :)

0

equalsy w encjach hibernetowych to nie taka oczywistość jak chcesz samemu je tworzyć :D

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