Czy dobrym pomysłem jest sformatowanie kodu zaćmieniem za pomocą automatycznego formatowania


20

Używam Eclipse do kodowania, a używanym przez nas językiem jest Java. Kiedyś ktoś zasugerował, aby poprawnie sformatować kod, używając automatycznego formatatora (CTRL + SHIFT + F) Podczas gdy to polecenie formatuje kod, ale czasami wydaje mi się, że ogólny wygląd staje się dziwny i nie jest zbyt czytelny.

Czy to jest zalecane? Jeśli nie, co lepiej sformatować nasz kod w środowisku Eclipse?


Cały czas korzystam z możliwości automatycznego formatowania emacsa - istnieją potencjalne kolizje (np. Przy scalaniu SC) .. ale ogólnie standaryzacja twojego formatu jest niezwykle pomocna
warren

Odpowiedzi:


34

Ścisłe reguły formatowania kodu są przydatne, gdy kilku programistów pracuje nad tym samym kodem za pomocą systemu kontroli wersji. Scalanie może być uciążliwe, jeśli różni programiści mają różne reguły formatowania, ponieważ ten sam kod wyglądałby inaczej w przypadku narzędzia do scalania.

Zaćmienie (lub inne dobre IDE w tym zakresie) ma reguły formatowania kodu, które można dostosować w sekcji preferencji (Java> Styl kodu> Formatyzator). Wybierz to, co lubisz najbardziej, ale zapoznaj się również ze standardowymi konwencjami kodu Java . Wiele projektów open source ma również własne konwencje kodu, które można egzekwować za pomocą formatyzatora Eclipse.

Ponadto istnieją standardowe narzędzia, takie jak CodeStyle, PMD i Findbugs, które egzekwują dodatkowe reguły i pomagają unikać typowych (niskopoziomowych) anty-wzorów i błędów.


4
Po skonfigurowaniu formatyzatora tak, jak chcesz. Jest przycisk „Eksportuj”, który pozwoli ci zapisać go w pliku .xml. Umieszczamy to w naszym repozytorium SVN, aby każdy miał do niego dostęp podczas sprawdzania projektu.
Chris

Zgadzam się z tym i używam PMD i FindBugs i wszystkich innych. Jest to jednak dobry pomysł, jeśli wszyscy członkowie zespołu przestrzegają zasad formatowania kodu. W przeciwnym razie otrzymujesz zatwierdzenia, które są zmianami + formatowaniem przez niektórych deweloperów, a nie innych, i trudno jest zobaczyć „prawdziwe” zmiany. Innymi słowy, jeśli stary kod nie jest już sformatowany za pomocą automatycznego formatowania, nie formatuj go z dodatkowymi zmianami w jednym zatwierdzeniu.
Mufasa

2
Jeśli dostosujesz ustawienia formatowania kodu, albo wepchnij te ustawienia do kontrolki źródłowej, aby wszyscy programiści je otrzymali, lub opublikuj je w jakiejś dokumentacji wiki lub dokumentacji dla programistów, aby każdy mógł uzgodnić styl.
Mufasa,

24

Uważam, że autoformatter jest bardzo przydatny. Zamiast ciągle podejmować mikrodecyzje dotyczące sposobu formatowania kodu - co jest podatne na błędy i powoduje „tarcie poznawcze” - możesz skonfigurować reguły formatowania i pozwolić Eclipse sformatować kod za ciebie (najlepiej automatycznie, używając „Zapisz akcje” ). Oczywiście wymaga to posiadania bazy kodu ze spójnym formatowaniem lub upoważnienia do sformatowania kodu zgodnie z ustawionymi regułami.

Włączenie „automatycznego formatowania przy zapisywaniu” przypomina trochę kompilację przyrostową, pozwala mózgowi skupić się na samym kodzie, zamiast zajmować się trywialnymi kwestiami, takimi jak formatowanie lub składnia kodu.

Ale tak, czasami autoformatter zepsuje jakąś ładnie sformatowaną tabelę, którą masz. W takich przypadkach używam „tagów on / off”. Są one konfigurowane w zakładce „tagi on / off” w profilu formatowania kodu. Za ich pomocą możesz wykluczyć regiony w kodzie z automatycznego formatowania:

// @formatter:off

... my nicely formatted table here ...

// @formatter:on

5
+1: Nigdy nie wiedziałem o tagach włączania / wyłączania (a mówiąc dokładniej, nigdy nie zadałem sobie trudu, żeby się dowiedzieć).
Paul Cager

1
Automatyczne formatowanie przy zapisie jest dobre, jeśli wszyscy uczestnicy projektu go używają. Jeśli tylko niektórzy programiści go używają, zbyt łatwo jest jednocześnie zatwierdzić zmiany ze zmianami formatowania kodu, co utrudnia znalezienie „prawdziwych” zmian w zatwierdzeniu.
Mufasa,

@Mufasa Tak, masz rację.
JesperE

1
Jeśli nie chcesz formatować komentarza, możesz napisać / * - mój super format * / Eclipse nie formatuje takiego komentarza :)
Dawid Drozd

5

To, czy jest to zalecane, zależy od tego, kogo zapytasz.

Mogę sobie wyobrazić, że wolisz sam sformatować kod, w końcu wiesz, co jest dla ciebie najlepsze i najłatwiejsze do odczytania. Na plus, jeśli jesteś osobą troskliwą, możesz uczynić ją bardziej czytelną także dla innych ludzi.

Maszyny nie mają takiego przewidywania i mogą (tak jak powiedziałeś) sprawić, że Twój kod wygląda na trochę bałaganu, nawet jeśli sformatują go według ścisłych reguł.

Dobre IDE lub narzędzie często może wykonać przyzwoitą robotę przy formatowaniu kodu, ale nie zawsze sprawi, że będzie tak czytelny, jak to tylko możliwe.

Moja rada: nie używaj go, chyba że otrzymasz kod od kogoś innego, a jest to taki bałagan, że nie możesz go odczytać inaczej.


5

Powinieneś używać go cały czas, aby zapewnić spójne stylizowanie wszystkich plików źródłowych. Zaoszczędzi to również dużo czasu, który zwykle spędziłbyś na ręcznym dostosowywaniu formatowania.

Formater Java w Eclipse wykonuje całkiem niezłą robotę i można go całkowicie dostosować. Jeśli nie zgadzasz się z ustawieniami domyślnymi (które mogę całkowicie zrozumieć), powinieneś dostosować formatyzator do własnych preferencji stylistycznych lub jakiegokolwiek innego standardu, którego używasz. Możesz to zrobić w ustawieniach Java / Code Style / Formatter.

Formaterery są jeszcze bardziej przydatne, gdy nie pracujesz sam. Jest bardzo prawdopodobne, że ty i członkowie twojego zespołu nie zgodzicie się co do tego, co uważasz za idealny styl kodu ™. W takim przypadku powinieneś zgodzić się na wspólną bazę i raz na zawsze zdefiniować reguły formatyzatora dla tego konkretnego stylu kodu. Następnie każdy może po prostu nacisnąć skrót formatu i wszystko pasuje do uzgodnionego stylu. W ten sposób twoje osobiste preferencje (podczas pisania) nie będą przeszkadzać. I zauważ, że styl formatera może być przechowywany w plikach projektu Eclipse, więc możliwe są także różne formaterery dla każdego projektu.


0

Chociaż lubię automatyczne formatowanie kodu przy zapisywaniu (w rzeczywistości włączyłem go w moich osobistych projektach). Odkryłem, że nie mogę w pełni polecić tej praktyki zespołom projektowym używającym produktów opartych na Eclipse, ponieważ formatyzator Eclipse zawiera kilka krytycznych błędów, które uniemożliwiają mi jej zalecenie.

W szczególności, jeśli masz włączoną funkcję „czyszczenia kodu” + „formatyzatora”, wcięcia są naprawiane / usuwane przy każdym zapisie.

Każda nowa wersja Eclipse może zmienić formatyzator (na lepsze), ale wprowadziłaby znaczące zmiany, takie jak JavaDocs, ostatecznie usuwając tę ​​dodatkową przestrzeń po *, ale wprowadzoną jakiś czas po Helios i wiele przedsiębiorstw korzysta ze starszej wersji Eclipse Rational Software który wykorzystuje Helios jako bazę.

Formatator kodu dostarczany przez Eclipse nie jest rozszerzalny dla ich API, w rzeczywistości wyraźnie stwierdza CodeFormatter javadoc

Ta klasa nie jest przeznaczona do podklasy dla klientów.

To prawda, że jak dotąd nie znalazłem żadnej realnej niekomercyjnej alternatywy. Jalopy nie jest aktualizowana od lat, a widelce w githubie nie są jeszcze zorganizowane, aby polecić którekolwiek z nich. Nie ma też żadnej strony z aktualizacjami dla Eclipse, aby ją zintegrować. Właściwie planowałem, aby formatowanie kodu było częścią kompilacji, podobnie jak zrobiłem plugin cleanpom-maven przy użyciu Jalopy, ale ten pomysł został odrzucony z powodu braku aktualizacji Jalopy.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.