La mejor solución es, obviamente, simplemente no anidar sus comentarios. Los comentarios anidados suelen ser una señal de que está utilizando comentarios incorrectos. El ejemplo más común es el código comentado que contiene comentarios en sí, y la solución es eliminar el código en lugar de comentarlo.
Dicho esto, muchos lenguajes de programación tienen más de un tipo de sintaxis de comentarios, y puede usar este hecho para anidar al menos un nivel de profundidad. Por ejemplo, en Java:
/* This is commented out!
Foo.bar.baz();
// And now for something completely different...
Quux.runWith(theMoney);
*/
Además, en muchos idiomas, al menos un tipo de comentario es anidable; en lenguajes tipo C, los comentarios de línea dentro de los comentarios de línea se ignoran:
// some_commented_out(code);
// // This is a comment inside the comment!
// // Still inside the nested comment.
// some_more_code_in(outer_comment);
La mayoría de los IDE admiten comentar bloques completos de código con comentarios de línea en una sola acción, y manejan este tipo de estilo de comentario correctamente. El mismo ejemplo en Python:
# some_commented_out(code)
# # This is a comment inside the comment!
# # Still inside the nested comment.
# some_more_code_in(outer_comment)
A menudo, los estándares de codificación para un proyecto en particular tienen reglas sobre qué estilo de comentario usar cuando; una convención común es usar comentarios de bloque ( /* */
) para la documentación del método y la clase, y comentarios en línea ( //
) para comentarios dentro de los cuerpos de los métodos y tales, por ejemplo:
/**
* 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 tal estilo, es poco probable que alguna vez necesite anidar /* */
comentarios (si tiene que deshabilitar temporalmente métodos o clases completos, renombrarlos funcionará igual de bien, si no mejor); y //
los comentarios hacen nido, al menos con un poco de ayuda de su IDE.
Finalmente, para deshabilitar el código, tiene otras opciones en muchos lenguajes de programación; por ejemplo, en C, puede aprovechar el preprocesador:
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
En lenguajes dinámicos, a menudo puede usar simplemente if
declaraciones regulares en su lugar:
<?php
if (0) {
// This should never run...
some_stuff_that_should_never_run();
}
Sin embargo, a diferencia del ejemplo de CPP, esta estrategia requiere que el archivo fuente en su conjunto sea sintácticamente válido, por lo que no es tan flexible.
Y finalmente, hay al menos algunos idiomas que permiten comentarios anidados. En caso de que le interese, wikipedia tiene una buena tabla de comparación .