Czy są jakieś konwencje zamawiania metod Java? [zamknięte]
Mam dużą klasę (około 40 metod), która jest częścią pakietu, który złożę jako kurs-praca. Obecnie metody są dość pomieszane pod względem użyteczności publicznej / prywatnej itp. i chcę je zamówić w rozsądny sposób. Czy jest na to standardowy sposób? Np. normalnie pola są wypisywane przed metodami, konstruktory są wypisywane przed innymi metodami, a gettery / settery są ostatnie; co z pozostałymi metodami?
8 answers
Niektóre konwencje wymieniają najpierw wszystkie metody publiczne, a potem wszystkie prywatne - oznacza to, że łatwo jest oddzielić API od implementacji, nawet jeśli nie ma interfejsu, jeśli widzisz, co mam na myśli.
Innym pomysłem jest grupowanie powiązanych metod razem - ułatwia to wykrywanie szwów, w których można podzielić istniejącą dużą klasę na kilka mniejszych, bardziej ukierunkowanych.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-12 11:32:31
Zmienne klasy (statyczne): najpierw zmienne klasy publicznej, potem chroniony, a potem prywatny.
Zmienne instancji: najpierw publiczne, potem chronione, a następnie prywatne.
-
Konstruktorzy
Metody: metody te powinny być pogrupowane według funkcji, a nie niż przez zakres lub dostępność. Na przykład metoda klasy prywatnej może być pomiędzy dwiema metodami instancji publicznych. Celem jest, aby czytanie i zrozumienie kodu łatwiej.
Źródło: http://www.oracle.com/technetwork/java/codeconventions-141855.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-26 19:48:33
Bardziej precyzyjny link do "Konwencji kodu": "deklaracje klas i interfejsów"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-26 20:21:11
Nie jestem pewien, czy istnieje powszechnie akceptowany standard, ale moje własne preferencje są;
- konstruktorzy pierwszy
- metody statyczne następnie, jeśli istnieje metoda główna, zawsze przed innymi metodami statycznymi
- Następnie metody niestatyczne, zwykle w kolejności znaczenia metody, po której następują dowolne metody, które wywołuje. Oznacza to, że publiczne metody, które wywołują inne metody klasowe, pojawiają się w kierunku góry, a prywatne metody, które nie wywołują innych metod, zwykle kończą się w kierunku bottom
- Standardowe metody jak
toString
,equals
ihashcode
Następna - getterzy i setterzy mają specjalne miejsce zarezerwowane na dole klasy
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-12 11:44:49
Moja "konwencja": statyczna przed instancją, publiczna przed prywatną, konstruktor przed metodami, ale główna metoda na dole (jeśli jest obecna).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-12 11:36:17
40 metod w jednej klasie to trochę dużo.
Czy sensowne byłoby przeniesienie niektórych funkcji do innych - odpowiednio nazwanych-klas. Wtedy jest o wiele łatwiej zrozumieć.
Gdy masz ich mniej, o wiele łatwiej jest wymienić je w naturalnej kolejności odczytu. Częstym paradygmatem jest lista rzeczy przed lub po , których potrzebujesz, w kolejności, w jakiej ich potrzebujesz.
To zwykle oznacza, że main()
idzie na górę lub na dół.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-28 04:34:00
Również eclipse oferuje możliwość sortowania członków klasy dla Ciebie, jeśli z jakiegoś powodu je pomieszałeś:
Otwórz plik klasy, przejdź do "źródło" w menu głównym i wybierz "Sortuj członków".
Wzięte stąd: metody sortowania w Eclipse
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:31:13
Używasz Eclipse? Jeśli tak, chciałbym trzymać się domyślnej kolejności sortowania członków, ponieważ prawdopodobnie będzie to najbardziej znane temu, kto czyta Twój kod (chociaż nie jest to moja ulubiona kolejność sortowania.)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-12 11:33:02