2011-02-09 9 views
7

Ho pensato di vedere se qualcuno potrebbe spiegare perché Anders deciso che questo è valido ...Conditionals a singola istruzione: perché il pattern non è utilizzato per altri blocchi di codice?

if(...) 
    //single statement 
else 
    ///single statement 

ma questo non è ...

try 
    //single statement 
catch 
    //single statement 
+5

pedante: non è "una linea" - si tratta di "una dichiarazione" –

+0

@ Marc: Non credo che sia una distinzione pedante. Infatti, sospetto che sia la risposta vera alla domanda. –

+0

@Cody - beh, si potrebbe probabilmente avere una dichiarazione nel tentativo, e una dichiarazione nel trucco ... non fraintendetemi però; I ** want ** parentesi qui; p –

risposta

7

citare Framework Design Guidelines nella sezione di "Convenzioni di stile generale" questo è detto a proposito parentesi:

EVITARE omettendo bretelle, anche se la lingua lo consente. Le parentesi graffe non dovrebbero essere considerate come opzionali . Anche per i blocchi di istruzioni singole , è necessario utilizzare le parentesi graffe per . Aumentare la leggibilità e la manutenibilità del codice .

Ci sono casi molto limitati quando bretelle omettendo potrebbe essere accettabile, ad esempio quando si aggiunge una nuova istruzione dopo un un'istruzione singöe-linea esistente è impossibile o estremamente raro. Ad esempio, è ha senso aggiungere una dichiarazione dopo una dichiarazione throw:

if(someExpression) throw new ArgumentOutOfRangeExcetion(...);

Un'altra eccezione alla regola è parentesi in istruzioni case. Queste parentesi graffe possono essere omesse poiché le dichiarazioni case e break indicano l'inizio e l'inizio del blocco.

Quello che Anders pensa è soggettivo e polemico, questa è la raccomandazione.

si potrebbe anche voler guardare la sezione relativa nuotata in coding convention over at msdn.

1

Probabilmente perché singole condizionali economico sono storicamente valido nelle lingue delle parentesi graffe, ma gli altri modelli non lo sono.

Poiché entrambi gli esempi rendono il codice meno leggibile in generale, non vi è alcun motivo valido per introdurre il supporto di istruzioni singole oltre a quelle storicamente necessarie.

Se si immagina di estendere il supporto per singole istruzioni a molti blocchi di codice, è possibile vedere facilmente qualcuno che scrive codice totalmente illeggibile. Personalmente eviterei anche il primo caso.

Problemi correlati