2010-09-16 12 views
26

Mam do czynienia z konkretną linią, która ma 153 znaki. Teraz mam tendencję do łamania rzeczy po 120 znakach (oczywiście zależy to w dużym stopniu od tego, gdzie jestem i lokalnych konwencji). Szczerze mówiąc, wszędzie, gdzie łamam tę linię, po prostu sprawia, że ​​wygląda źle. Więc szukam pomysłów na to, co powinienem dla niego zrobić.Owijanie linii kodu - jak obsługiwać długie linie

Oto wiersz:

private static final Map<Class<? extends Persistent>, PersistentHelper> class2helper = new HashMap<Class<? extends Persistent>, PersistentHelper>(); 

Jestem otwarty na obu idei o jak/gdzie do przełamania linii (i dlaczego), a także sposobów na skrócenie samą linię.

Nie jesteśmy sklepem Java i nie ma lokalnych konwencji dotyczących tego typu rzeczy, lub po prostu po prostu bym ich przestrzegał.

Dzięki!

Odpowiedz

32

W ogóle złamać linie przed operatorów i wcięcie kolejne linie:

Map<long parameterization> 
    = new HashMap<ditto>(); 

String longString = "some long text" 
        + " some more long text"; 

do mnie, operator prowadzący wyraźnie przekazuje, że „ta linia była kontynuowana od czegoś innego, to nie stoi na własną rękę. " Oczywiście inne osoby mają inne preferencje.

+1

A jako powiązany komentarz: czy nie byłoby miło, gdyby Java miała typedef? – Anon

+1

Tak, tak. Nawet zgodziłbym się na & makra – corsiKa

+4

Zgadzam się z przerwą przed operatorami z wyjątkiem operatora przypisania, uważam, że trudniej jest odczytać, kiedy twoje '=' znajduje się w drugiej linii. I wkrótce Java będzie miała operatora Diamond :) –

6

IMHO jest to najlepszy sposób, aby napisać wiersz:

private static final Map<Class<? extends Persistent>, PersistentHelper> class2helper = 
     new HashMap<Class<? extends Persistent>, PersistentHelper>(); 

ten sposób zwiększone wcięcie bez szelek może pomóc, aby zobaczyć, że kod został właśnie splited ponieważ linia była zbyt długa. Zamiast 4 spacji 8 sprawi, że będzie wyraźniejszy.

+0

Linia może zaczynać się od operatora, ale nigdy nie powinna kończyć się nim, w tym przypadku '='. Sprawdź automatyczne formatowanie w swoim IDE. NetBeans z pewnością zmieniłby ten kod (przetestowany). – Hermes

+4

Ustawienia domyślne IDE nie odnoszą się do osobistych preferencji ani zaleceń programisty. Rozumiem, że niektórzy ludzie woleliby używać '=' na początku wiersza, ale w przypadku deklaracji atrybutów klas (lub ogólnie atrybutów) uważam, że kod jest już wystarczająco wyraźny (wcięcie drugiej linii powinno jeszcze bardziej wyjaśnić). –

+2

Dla jasności nie ma tu dobra i zła, to czysta estetyka i osobiste poglądy. –

4

Wykorzystuje statyczne metody Guava dla Map i ma tylko 105 znaków.

private static final Map<Class<? extends Persistent>, PersistentHelper> class2helper = Maps.newHashMap(); 
+3

+1 Bardzo dobry pomysł. Jeśli nie chcesz dodatkowej zależności, bardzo łatwo jest napisać taką statyczną fabrykę na własną rękę. – helpermethod

+41

Nie sądzę, że używanie biblioteki do uzyskania krótszych linii to dobry pomysł. – Carlos

+1

Nie polecam włączania go do tego celu, ale wiele projektów już z niego korzysta. Jak zauważyła metoda pomocnicza, jest to jedna liniówka, która oszczędza kluczowe uderzenia. – whiskeysierra

6

Tak to robię, a Google robi to po swojemu.

  • Przerwa przed Symbolem braku przypisania operatora.
  • Przerwa po symbolu dla i dla = i dla ,.

W twoim przypadku, ponieważ używasz 120 znaków, można podzielić go po stronie operatora przypisania w wyniku

private static final Map<Class<? extends Persistent>, PersistentHelper> class2helper = 
     new HashMap<Class<? extends Persistent>, PersistentHelper>(); 

W Javie, i dla tego konkretnego przypadku, dałbym dwie zakładki (lub osiem spacji) po przerwie, w zależności od tego, czy tabulatory czy spacje są używane do wcięcia.

To oczywiście osobiste preferencje i jeśli twój projekt ma własną konwencję do zawijania linii, to powinieneś podążać, czy ci się to podoba, czy nie.

0

Myślę, że przenoszenie ostatniego operatora na początek następnej linii jest dobrą praktyką. W ten sposób od razu wiesz, do czego służy druga linia, nawet nie zaczyna się od operatora. Polecam również 2 miejsca wcięcia (2 zakładki) dla wcześniej złamanej zakładki, aby odróżnić ją od normalnego wcięcia.Jest to natychmiast widoczne jako kontynuacja poprzedniej linii. Dlatego sugeruję to:

private static final Map<Class<? extends Persistent>, PersistentHelper> class2helper 
      = new HashMap<Class<? extends Persistent>, PersistentHelper>(); 
Powiązane problemy