2009-09-01 13 views
18

Ostatnia aktualizacja firmy Sun "Code Conventions for the Java Programming Language" została przeprowadzona w kwietniu 1999 r. Dziesięć lat później wiele się zmieniło w języku, a także w ogólnych wzorcach użytkowania. Czy istnieją bardziej aktualne, powszechnie przyjęte standardy?Czy są jakieś rozpowszechnione, nowoczesne konwencje kodowania Java?

Większość wytycznych nie określa kodowania plików i zakończenia linii. Firma Sun zaleca mieszane karty i spacje. IDE Eclipse jest domyślnie standardem Eclipse, czyli tylko kartami. Maven style guide to tylko spacje. Wiele przewodników po stylach, takich jak JBoss, jest zgodnych z wytycznymi firmy Sun, ale preferują klamry K & zamiast OTBS. Każdy projekt Apache ma swój własny przewodnik po stylach, z niewielkimi różnicami między poszczególnymi.

+0

I jak Take Joela na standardy kodowania i co one są przeznaczone dla, ale zbyt często kończą jako religii bez krytycznego myślenia o tym, dlaczego: http: //www.joelonsoftware.com/articles/Wrong.html – SteveD

+0

Tabulatory: Jeśli używasz dowolnego * kompetentnego * edytora, może on łatwo przekształcić zakładki w dowolne pożądane # miejsca, które chcesz. Aby precyzyjnie dopasować kod, użyj spacji. – Populus

+0

Stworzyłem listę najlepszych praktyk i konwencji dotyczących kodowania java, z których regularnie korzystam w moim codziennym rozwoju. Konwencje kodowania składają się zazwyczaj z 5 tematów: konwencji nazewnictwa, pakowania, dokumentacji i rejestrowania, formatowania kodu oraz technik kodowania. Zapoznaj się z artykułem na stronie http://programmergate.com/coding-conventions/ –

Odpowiedz

3

Pytanie nie pyta o twój styl kodowania, ale raczej o istniejące standardy kodowania.

znalazłem European Space Agency Java Coding Standards (pdf) (alt link), który wydaje się aktualne i wyczerpujące, chociaż nie jestem pewien, jak to powszechne przyjęcie.

+0

"Zasada 1: Użyj narzędzia Ant Antache do automatycznego zbudowania projektu." Domyślam się, że oznacza to, że istnieje teraz sporo złamanych projektów open source. ;-) –

+0

Tak, ale jest to lepsze niż zalecenie Sun "GNUmakefile - preferowana nazwa dla plików Makefile". Jeśli chodzi o standardy, ciężko jest wybrać projekt, w którym ostatni programista korzystał z Groovy/Ruby/Maven itp., Aby zbudować swój projekt. Możesz skompilować swój projekt z awk tak daleko, jak mnie to obchodzi, pod warunkiem, że również dostarczysz lub wyeksportujesz plik ant. – brianegge

15

Cztery przestrzenie - to, czego używa Bóg.

+0

To, co Sun używa (przynajmniej dla JDK). –

+1

Zabawne, to też używam;). Poważnie, ale nie przejmuj się kodowaniem plików i zakończeniami linii - nigdy nie słyszałem o tym w dyskusji na temat standardów kodowania. – Corehpf

+5

To za dużo przestrzeni. – Apocalisp

6

Choć może to wyglądać dnia, niedużo został dodany do samego języka podstawowego (biblioteki mieli dużo dużo dodatków chociaż)

Ci pamiętam to teraz są enum i rodzajowych, reszta już tam była, kiedy dokument został po raz pierwszy napisany.

  • Używaj zawsze 4 spacji.

  • Nie używaj K & R lub Allman: Choć jest całkowicie dopuszczalne dla C, C++ i C# to nie zawsze jest w przypadku Javy (o ile projekt wyraźnie zdecydował się go używać). Używanie K & R lub Allman w Javie jest wizualnie nieprzyjemne, ponieważ nie byłoby możliwe użycie go w C.

  • Używaj zawsze nawiasów klamrowych, w tym instrukcji pojedynczych.

Ogólnie rzecz biorąc, staraj się nie mieszać stylów między językami programowania. To jak akcent wymowy w języku naturalnym, możesz być zrozumiany, możesz w nim czytać i pisać, i mieć sprawny poziom w języku, ale niewystarczająca wymowa tylko irytuje native speakerów.

+0

Czuję, że wiele się zmieniło. Zarówno pod względem funkcji, jak i tego, jak ludzie używają tego języka. Ewolucja jest dlatego, że mamy HashMap nie Hashmap. Język ma teraz adnotacje, import statyczny, autoboxing, foreach, itp. Nawet trudno mi odczytać kod Java 1.0-1.2. Unicode jest na tyle powszechny, że teraz możesz znaleźć programy z charakterem Unicode w komentarzach i łańcuchach. Elementy takie jak "GNUmakefile - preferowana nazwa dla plików Makefile." Prawdopodobnie zostaną usunięte ze standardu kodowania Sun. – brianegge

+0

Co? Oficjalne konwencje C# mówią, że nie używają K & R. Dla porównania, pozwalają na to oficjalne konwencje Java. –

+0

@brianegge Masz rację, to jest styl Allmana no K & R – OscarRyz

7

Jedynym standardem kodowania, który naprawdę należy przestrzegać, jest zaakceptowany przez zespół projektowy. Możesz nie zgodzić się z zakładkami zamiast spacji, ale jeśli jest to konwencja kodowania twojego zespołu, zrobisz najlepiej, aby go przestrzegać.

+0

Próbując doprowadzić do konsensusu zespołu, często bardzo przydatne jest posiadanie listy wspólnych standardów, więc możesz powiedzieć: "Myślę, że powinniśmy przyjąć standard X" lub "standard Y jest używany przez wiele innych projektów ". Stąd pytanie. – brianegge

+0

Zgadzam się. Próbując założyć zespół lub zbudować consensus, jesteś absolutnie poprawny. Niestety, jak podkreślasz, twoja "lista wspólnych standardów" często zawiera konflikty! – akf

-2

BSD/Allman to jedyny styl przyzwoity. Spełnia podstawową zasadę nawiasów klamrowych - jeśli siedzą na różnych liniach, powinny siedzieć na tej samej kolumnie. Nawet Horstmann jest tolerowany w porównaniu do K & R.

Zawsze umieszczaj nawiasy klamrowe, jeśli kodujesz w notatniku. W przeciwnym razie, z powodu funkcji auto-wcięcia twojego IDE, jest to bezużyteczne i denerwujące.

0
+0

Ta książka jest prawie tak stara, jak przewodnik Sun. – brianegge

+0

+1 Jest to wybitna książka, która wciąż ma zastosowanie, pomimo jej wieku. – Mocky

1

Rozważmy pomocą jednego używany domyślnie przez mechanizm reformatter Twojego IDE. Zaoszczęszczę ci dużo czasu na dłuższą metę.

Włączamy zapisywanie akcji w Eclipse i zaznaczamy opcję Formatuj źródło, aby źródła zawsze były ponownie formatowane. Oznacza to, że reformat zmienia tylko to, co się stało od ostatniego zapisania pliku. Jest miła w historii kontroli źródła.

Naturalnie można poświęcić trochę czasu i zdefiniować swój własny format, ale łatwiej jest korzystać ze standardu Eclipse - dla nas jest ok.

Powiązane problemy