La soluzione migliore è, ovviamente, solo non annidare i tuoi commenti. I commenti annidati sono di solito un segno che stai usando i commenti errati. L'esempio più comune è il codice commentato che contiene i commenti stessi e la soluzione è rimuovere il codice invece di commentarlo.
Detto questo, molti linguaggi di programmazione hanno più di un tipo di sintassi dei commenti, e puoi usare questo fatto per nidificare almeno un livello di 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 nestable; 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 commenti interi blocchi di codice con commenti di riga in un'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 i commenti di blocco ( /* */
) per la documentazione di metodi e classi e i commenti in linea ( //
) per le osservazioni all'interno dei corpi del metodo 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 uno stile simile, è improbabile che tu abbia mai bisogno di annidare% commenti di/* */
(se devi disabilitare temporaneamente interi metodi o classi, rinominarli funzionano altrettanto bene, se non meglio); e //
commenti fanno annidano, almeno con un piccolo aiuto dal tuo IDE.
Infine, per disabilitare il codice, hai altre opzioni in molti linguaggi di programmazione; ad esempio, in C, puoi 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
Nei linguaggi dinamici, puoi spesso utilizzare solo% di dichiarazioni di if
:
<?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 di origine nel suo complesso sia sintatticamente valido, quindi non è di gran lunga flessibile.
E infine, ci sono almeno alcune lingue che consentono commenti annidati. Se sei interessato, wikipedia ha una bella tabella di confronto .