La soluzione migliore è, ovviamente, semplicemente non annidare i tuoi commenti. I commenti nidificati in genere indicano che si stanno utilizzando commenti errati. L'esempio più comune è il codice commentato che contiene commenti stessi e la correzione è rimuovere il codice invece di commentarlo.
Detto questo, molti linguaggi di programmazione hanno più di un tipo di sintassi di commento e puoi usare questo fatto per annidare almeno un livello in profondità. Ad esempio, in Java:
/* This is commented out!
Foo.bar.baz();
// And now for something completely different...
Quux.runWith(theMoney);
*/
Inoltre, in molte lingue, almeno un tipo di commento è di tipo annidabile; nei linguaggi di tipo C, i commenti di riga all'interno dei commenti di riga vengono ignorati:
// some_commented_out(code);
// // This is a comment inside the comment!
// // Still inside the nested comment.
// some_more_code_in(outer_comment);
La maggior parte degli IDE supporta il commento di interi blocchi di codice con commenti di riga in un'unica azione e gestiscono correttamente questo tipo di stile di commento. Lo stesso esempio in Python:
# some_commented_out(code)
# # This is a comment inside the comment!
# # Still inside the nested comment.
# some_more_code_in(outer_comment)
Spesso, gli standard di codifica per un particolare progetto hanno regole su quale stile di commento usare quando; una convenzione comune consiste nell'utilizzare commenti a blocchi ( /* */
) per la documentazione relativa a metodi e classi e commenti incorporati ( //
) per osservazioni all'interno degli organismi dei metodi e simili, ad esempio:
/**
* Helper class to store Foo objects inside a bar.
*/
public class Foobar {
/**
* Stores a Foo in this Foobar's bar, unless the bar already contains
* an equivalent Foo.
* Returns the number of Foos added (always 0 or 1).
*/
public int storeFoo(Foo foo) {
// Don't add a foo we already have!
if (this.bar.contains(foo)) {
return 0;
}
// OK, we don't have this foo yet, so we'll add it.
this.bar.append(foo);
return 1;
}
}
Con un tale stile, è improbabile che tu abbia mai bisogno di annidare i /* */
commenti (se devi disabilitare temporaneamente interi metodi o classi, rinominandoli funzionano altrettanto bene, se non meglio); e //
commenti fanno nido, almeno con un piccolo aiuto da vostro IDE.
Infine, per disabilitare il codice, hai altre opzioni in molti linguaggi di programmazione; ad esempio, in C, è possibile sfruttare il preprocessore:
this_is(activated);
#if 0
this_is(!activated);
/* Comments inside this block don't really nest, they are simply removed
along with the rest of the block! */
#endif
In linguaggi dinamici, spesso puoi semplicemente usare if
istruzioni regolari :
<?php
if (0) {
// This should never run...
some_stuff_that_should_never_run();
}
Tuttavia, a differenza dell'esempio CPP, questa strategia richiede che il file sorgente nel suo insieme sia sintatticamente valido, quindi non è molto flessibile.
E infine, ci sono almeno alcune lingue che consentono commenti nidificati. Nel caso tu sia interessato, Wikipedia ha una bella tabella comparativa .