2010-09-16 7 views
26

Sono di fronte a una riga specifica lunga 153 caratteri. Ora, tendo a rompere le cose dopo 120 caratteri (ovviamente, questo dipende in larga misura da dove mi trovo e dalle convenzioni locali). Ma ad essere onesti, dappertutto rompo la linea fa sembrare tutto negativo. Quindi sto cercando alcune idee su cosa dovrei fare per questo.Avvolgimento riga codice - come gestire le lunghe file

Ecco la linea:

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

Sono aperto a entrambe le idee su come/dove rompere la linea (e perché), come pure i mezzi per abbreviare la linea stessa.

Non siamo un negozio Java, e non ci sono convenzioni locali per questo genere di cose, o ovviamente vorrei semplicemente seguirle.

Grazie!

risposta

32

In generale, mi rompere le linee prima operatori, e rientrare le righe successive:

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

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

Per me, il principale operatore trasmette chiaramente che "questa linea è stata proseguita da qualcos'altro, è non sta da solo. " Le altre persone, ovviamente, hanno preferenze diverse.

+1

E come commento correlato: non sarebbe bello se Java avesse typedef? – Anon

+1

Sì, sì, lo farebbe. Mi piacerebbe anche accontenterei di & macro – corsiKa

+4

Sono d'accordo con la pausa prima di operatori se non con l'operatore di assegnazione, lo trovo più difficile da leggere quando il '' = è sulla seconda riga. E presto Java avrà l'operatore Diamond :) –

6

IMHO questo è il modo migliore per scrivere la vostra linea:

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

In questo modo l'aumento del rientro senza bretelle può aiutare a vedere che il codice è stato appena splited perché la linea era troppo lunga. E invece di 4 spazi, 8 renderà più chiaro.

+0

Una linea può iniziare con un operatore, ma non dovrebbe mai finire con esso, in questo caso '='. Controlla la formattazione automatica nel tuo IDE. NetBeans cambierebbe sicuramente questo codice (testato). – Hermes

+4

Le impostazioni predefinite di un IDE non sono pertinenti alle preferenze personali o ai consigli di uno sviluppatore. Comprendo che alcune persone preferirebbero usare '=' all'inizio della riga, ma nel caso della dichiarazione degli attributi di classe (o degli attributi in generale per quella materia), ritengo che il codice sia già abbastanza chiaro (l'indentazione della seconda riga dovrebbe renderlo ancora più chiaro). –

+2

Giusto per essere chiari, non c'è giusto e sbagliato qui, è puramente estetica e opinioni personali. –

4

Utilizza i metodi di fabbrica statici di Guava per Maps ed è lungo solo 105 caratteri.

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

+1 Ottima idea. Se non vuoi la dipendenza aggiuntiva, è molto facile scrivere una fabbrica così statica da sola. – helpermethod

+41

Non penso che usare una libreria per ottenere linee più brevi sia una buona idea. – Carlos

+1

Non consiglierei di includerlo a tale scopo, ma molti progetti lo usano già. E come ha sottolineato Helper Method, è una fodera che salva alcuni tratti chiave. – whiskeysierra

6

Questo è il modo in cui lo faccio, e Google fa a modo mio.

  • Pausa prima il simbolo per non assegnazione operatori.
  • Pausa dopo il simbolo per = e per ,.

Nel tuo caso, dal momento che si sta utilizzando 120 caratteri, si può rompere dopo l'operatore di assegnamento conseguente

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

In Java, e per questo caso particolare, darei due schede (o otto spazi) dopo l'interruzione, a seconda che si utilizzino tabulazioni o spazi per il rientro.

Questa è ovviamente una preferenza personale e se il tuo progetto ha una propria convenzione per il line-wrapping, allora questo è ciò che dovresti seguire se ti piace o no.

0

Penso che spostare l'ultimo operatore all'inizio della riga successiva sia una buona pratica. In questo modo sai subito lo scopo della seconda riga, anche se non inizia con un operatore. Raccomando anche 2 spazi di indentazione (2 schede) per una scheda precedentemente rotta, per differenziarla dalla normale indentazione.Questo è immediatamente visibile come continua linea precedente. Pertanto suggerisco questo:

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