Mam dużą klasę (około 40 metod), która jest częścią pakietu, który będę przesyłał w ramach kursu. Obecnie metody są dość pomieszane pod względem użyteczności publicznej / prywatnej itp. I chcę je uporządkować w rozsądny sposób. Czy jest na to standardowy sposób? Np. Normalnie pola są wymienione przed metodami, konstruktor (y) są wymienione przed innymi metodami, a metody pobierające / ustawiające są na końcu; co z pozostałymi metodami?
java
methods
conventions
fredley
źródło
źródło
Odpowiedzi:
Niektóre konwencje wymieniają najpierw wszystkie metody publiczne, a następnie wszystkie prywatne - oznacza to, że łatwo jest oddzielić API od implementacji, nawet jeśli nie ma interfejsu, jeśli rozumiesz, o co mi chodzi.
Innym pomysłem jest zgrupowanie powiązanych metod razem - ułatwia to dostrzeżenie połączeń, w których można podzielić istniejącą dużą klasę na kilka mniejszych, bardziej ukierunkowanych.
źródło
Zmienne klasowe (statyczne): najpierw zmienne klasy publicznej, następnie chronione, a na końcu prywatne.
Zmienne instancji: najpierw publiczne, następnie chronione, a na końcu prywatne.
Konstruktorzy
Metody: metody te powinny być pogrupowane według funkcjonalności, a nie zakresu lub dostępności. Na przykład metoda klasy prywatnej może znajdować się między dwiema metodami wystąpienia publicznego. Celem jest ułatwienie czytania i rozumienia kodu.
Źródło: http://www.oracle.com/technetwork/java/codeconventions-141855.html
źródło
Bardziej precyzyjny link do „Konwencji kodowych”: „Deklaracje klas i interfejsów”
źródło
Nie jestem pewien, czy istnieje powszechnie przyjęty standard, ale moje własne preferencje są;
toString
,equals
ihashcode
następneźródło
new Thing()
powinno skutkować jedynie utworzeniem wystąpienia nowej rzeczy. Nie powinno to powodować otwierania połączeń z bazami danych, zapisywania plików itp.40 metod w jednej klasie to trochę za dużo.
Czy miałoby sens przeniesienie części funkcjonalności do innych - odpowiednio nazwanych - klas. Wtedy znacznie łatwiej jest to zrozumieć.
Gdy jest ich mniej, znacznie łatwiej jest je wymienić w naturalnej kolejności czytania. Częstym paradygmatem jest umieszczanie listy rzeczy przed lub po tym, jak ich potrzebujesz, w takiej kolejności, w jakiej ich potrzebujesz.
Zwykle oznacza to, że
main()
znajduje się na górze lub na dole.źródło
onPause()
,onResume()
itp, jak również wszystkich moichOnClickListener
polach, które, chociaż są to pola, nie wyglądają lub zachowują się jak oni, więc jest to rozsądne wymień je osobno.Moja „konwencja”: statyczna przed instancją, publiczna przed prywatną, konstruktor przed metodami, ale główna metoda na dole (jeśli występuje).
źródło
Ponadto eclipse oferuje możliwość sortowania członków klasy, jeśli z jakiegoś powodu ich pomieszałeś:
Otwórz plik klasy, przejdź do „Źródła” w menu głównym i wybierz „Sortuj członków”.
zaczerpnięte stąd: Metody sortowania w Eclipse
źródło
Czy używasz Eclipse? Jeśli tak, to trzymałbym się domyślnej kolejności sortowania, ponieważ jest to prawdopodobnie najbardziej znane każdemu, kto czyta Twój kod (chociaż nie jest to moja ulubiona kolejność sortowania).
źródło