2010-06-09 4 views
21

Mentre stavo scrivendo un altro interruttore in Eclipse, ancora una volta sono imbattuto in un piuttosto strano (per me, almeno) rientranza di default, che viene applicato alle dichiarazioni 'switch':Qual è il modo migliore per indentare i casi in uno switch?

switch (i) { 
case 1: 
    ... 
case n: 
    ... 
} 

tendo a preferire un'altra way:

switch (i) { 
    case 1: 
     ... 
    case n: 
     ... 
} 

Quale modo è più leggibile e piacevole per voi? Non sono ancora al cento per cento determinato per quello che è meglio per me, quindi mi piacerebbe attenermi a ciò che è meglio per le altre persone che leggono il mio codice.

BTW, sei libero di chiudere questa domanda se questo è troppo soggettivo. :)

+0

mio Eclipse di trattini di default come secondo modo. Forse un errore nel formatter del codice del tuo Eclipse? – BalusC

+0

Visual Studio anche per i formati predefiniti in 2o modo. – Naveen

+2

@BalusC: Solo il formattatore "Eclipse 2.1 [built-in]" lo formatta con un ulteriore rientro. Sia "Eclipse [built-in]" e "Convenzioni Java [built-in]" non usano indentazione per l'istruzione case (l'ho appena verificato su Eclipse 3.5). –

risposta

0

io uso secondo modo:

switch (i) { 
    case 1: 
     ... 
    case n: 
     ... 
} 
15

io preferisco il secondo modo pure. Ma è più importante rimanere consistente all'interno di una particolare applicazione e/o all'interno di una squadra particolare piuttosto che rientrare in un modo o nell'altro.

8

tendo a rientrare tutti i corpi di struttura di controllo una scheda singola (4space) in questo modo:

switch (i) 
{ 
    case 1: 
     ... 
    case n: 
     ... 
} 

ritengo l'interruttore sia la struttura di controllo esterno e la parte direttive caso del corpo (anche se fanno parte della struttura di controllo).

vorrei poi ulteriormente scheda trattino ogni caso in questo modo:

switch (i) 
{ 
    case 1: 
     do_something(); 
    case n: 
     do_something_else(); 
} 

Trovo che questo sia il formato più leggibile per il caso interruttore costrutto.

Come jkohlhepp ha menzionato la conformità alle convenzioni di stile del codice del progetto su cui si sta lavorando è la cosa più importante, se si sta lavorando su un progetto che non ne ha, vale la pena di svilupparne alcuni.

+1

+1 Anch'io posto il tutore di apertura su una nuova riga. – onedaywhen

+4

uggg, la parentesi aperta di un blocco dovrebbe andare sulla stessa linea della definizione del blocco – Jay

+0

-1 poiché hai posizionato la parentesi aperta su una nuova riga (ovviamente non sto facendo downvoting per la tua risposta reale, ma la odio davvero), ma +1 (per ora reale) per il modo in cui indentate tutto il resto. – SlackOverflow

0

Il primo metodo ha senso logico (per me), tuttavia preferisco anche il secondo metodo. Penso che molti di noi siano condizionati ad aspettarsi che il codice all'interno delle parentesi graffe sia rientrato.

7

Secondo lo "official" Java Code Conventions, è la prima variante (nessun rientro aggiuntivo per caso).

+0

Buono il fatto che le convenzioni di Oracle (o effettivamente di Sun) siano ancora archiviate, ma le informazioni sono state aggiornate per l'ultima volta nel 1999, quindi non valide per ora. [Guida allo stile Java di Google] (https : //google.github.io/styleguide/javaguide.html#s4.8.4-switch) consiglia di indentare il contenuto del blocco, anche se – asgs

1

Il primo è il rientro del caso interruttore standard.

switch (i) { 

case 1: 
    .... // Here you can write more code in a row than using the second way 
    break; 
case n: 
    .... 
    break; 
default: 
    .... 
    break; 
} 

Avviso la nuova linea inserito tra interruttore (i) e il caso 1:

1

Se si preferisce il secondo caso, allora per coerenza si dovrebbe anche rientrare la parte else di un if dichiarazione:

if(test) 
    do_something(); 
    else 
     do_something_else(); 

La maggior parte delle persone non lo fa e la convenzione è di mantenere i rami sullo stesso livello dell'istruzione, quindi Java preferisce il primo come test dell'istruzione del caso e le diramazioni del codice sono coerenti nel livello di un if/then/altro costrutto t.

ho flip-flop tra loro pure, ma si è conclusa definitivamente preferendo la prima:

switch (i) { 
case 1: 
    ... 
case n: 
    ... 
} 
+0

mi spiace, ma perché dovrei 'else' essere indentato ulteriormente? livello ame come 'if', mentre' case' è all'interno di 'switch'. La [Guida allo stile Java] di Google (https://google.github.io/styleguide/javaguide.html#s4.8.4-switch) che è diventata praticamente standard in questi giorni, consiglia di indentare il contenuto del blocco Switch. – asgs