2009-11-16 16 views
8

La maggior parte delle guide di stile C# consigliano lo stile/* ... */per i commenti, in favore di // o ///. Perché lo stile precedente deve essere evitato?Stile di codifica C#: commenti

+1

dovrebbe essere una comunità wiki ... – Achilles

+0

@Achilles ... perché? – Brandon

+0

@Brandon, perché la risposta è una questione di preferenza. – James

risposta

9

Non direi che ho una forte opinione contro entrambi - ma IMO il problema più grande è che /* e */ si incasinano se lo hai annidato, con l'effetto collaterale che non puoi copiare/incollare blocchi attorno in modo sicuro (abbastanza).

È possibile finire facilmente con il codice errato commentato/abilitato oppure finire con il non compilare perché si è finito con uno /* /* */ */.

Se si copia un blocco di // in giro, nessun danno - solo quelle righe rimangono commentate.

+0

Non si annidano correttamente. –

+1

@Justin: esattamente ;-p –

3

/* */ va bene per i blocchi di codice a più linee. Ad esempio nella parte superiore di un file di codice, informazioni sul copyright ecc.

// è più semplice per la linea singola.

Utilizzare sempre /// per almeno tutti i membri pubblici in una classe in quanto la documentazione XML viene generata da quella da cui è possibile creare file della guida.

1

Penso che si commenta come si desidera dal momento che molti di noi stanno commentando tramite scorciatoie in Visual Studio. Io uso ctr+K, ctrl+C tutte le righe selezionate sono rese comode e ctr+K ctrl+U per decommentare le righe selezionate.

+0

Non è CTRL + E, C e CTRL + E, U? –

+0

sì alcuni VS hanno questa combinazione ma non so come la mia usi quella per ogni installazione che ho fatto da solo. Qualcosa è con la mia Carma :). –

0

La mia ipotesi è perché si richiede una sintassi esplicita su OGNI riga e si creano commenti che possono commentare ampie sezioni di codice se la chiusura */ non viene utilizzata. Non è altrettanto sicuro.

1

La mia opinione è che "//" è solo più facile da digitare a/**/

+0

+1 per non farmi girare intorno alla tastiera per colpire shift-8 –

+0

Io uso sempre il tastierino numerico e * dove sono proprio l'uno accanto all'altro senza l'uso di Maiusc. – JulianR

6

Un esempio che viene in mente è che è possibile interrompere accidentalmente un commento /* stile. Ad esempio

/* This is the start of a comment that documents the 
    behavior of the +-*/ operators in our program 
*/ 

Questo codice non compilazione, mentre la variante // sarebbe. Anche lo /// rappresenta uno stile specifico di documentazione a cui gli strumenti esterni rispondono in modo diverso.

1

Penso che il /* */ alla fine farà il giro del Dodo perché in Visual Studio è sufficiente selezionare un blocco di codice e premere CTRL-E, C per commentarlo usando lo stile //.

+0

+1 Picchiami. :) – Dusty

+0

Ctrl + Alt +/in Resharper o/o 'in CodeRush. –

1

Uso sempre // per i commenti effettivi, mentre salvo il/* */per il codice che non desidero eseguire temporaneamente per scopi di debug/sviluppo.

Utilizzando solo //, quindi si può essere certi di poter commentare un grande blocco di linee/metodi, ecc. Senza annidare i commenti e fare piangere il compilatore.

6

Ci sono alcuni motivi per preferire // a/* .. * /.

  • Come accennato da JaredPar, ci sono strani problemi di annidamento dei commenti che possono emergere con/* */utilizzo.
  • Se scrivete/scrivete del codice che elabora file di codice sorgente, sarete davvero felici se il metodo // è tutto ciò che dovete affrontare.
  • È molto più facile rilevare visivamente un grande blocco di codice commentato con il metodo "//", in particolare se la colorazione della sintassi non è disponibile. In effetti, vedrai spesso le singole righe in un blocco/* */con prefisso *, solo per sicurezza.
  • Lo stile di commento XML che può essere utilizzato per produrre la documentazione del codice richiede l'utilizzo di "///".
4

Una cosa che/* * può fare che // non può è commentare una parte interna di una linea. Io a volte lo uso per commentare un parametro da un metodo in cui qualcosa non è ovvia:

 point = ConvertFromLatLon(lat, lon, 0.0 /* height */) ; 

In questo caso la costante, 0.0, viene passato come terzo parametro è che rappresenta l'altezza. Naturalmente questo potrebbe essere migliore:

 double height = 0.0; 
     point = ConvertFromLatLon(lat, lon, height) ; 

(io sono più propensi a utilizzare il/* */intra-line temporaneamente, per provare appena fuori il superamento di un valore specifico.)

Problemi correlati