Aparece no solo en un idioma que los comentarios no se pueden anidar. ¿Tienes una buena solución para este problema? Una solución alternativa en C / C ++ y Java es usar solo el comentario de una sola línea, pero resulta imposible comentar un bloque más grande. Estoy enfrentando algo como esto:
</li><!--
<li><!-- Save -->
Entonces debo revisar y editar los comentarios manualmente. ¿Puede aconsejar cómo debemos manejar esto, en muchos idiomas? No estoy seguro, pero ¿quizás Python tiene una solución para esto con la '''
forma en que podría incluir un #
comentario en Python? ``
'''
y"""
son literales de cadena . Sucede que el intérprete los evaluará durante la compilación (para bytecode) y reconocerá los literales de cadena como no-ops (por lo tanto, no ralentizan el tiempo de ejecución / carga de bytecode). Las cadenas de documentos, es decir, los literales de cadena justo después de undef
pero antes del cuerpo, no se eliminan, ya que el intérprete supone que proporcionan documentación para la función.#if 0
<code>#endif
. Así que esto no es realmente un problema. Usar comentarios para hacer esto es la herramienta incorrecta.Respuestas:
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:
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:
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:
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: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:
En lenguajes dinámicos, a menudo puede usar simplemente
if
declaraciones regulares en su lugar: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 .
fuente
// And now for something completely different...
C y C ++ tienen comentarios de bloque anidados:
Muchos editores destacados lo entienden como un comentario y muchos otros al menos lo resaltarán como cualquier otro código condicionalmente deshabilitado.
En muchos otros idiomas debe confiar en el soporte del editor. Para los idiomas que solo tienen comentarios basados en líneas (perl, python, ruby, shell ...), es bastante simple anteponer el carácter del comentario a todas las líneas en un rango, por lo que la mayoría de los editores pueden hacer esto. Todavía puede decir cuáles fueron los comentarios antes de comentar todo el bloque porque el carácter del comentario se duplica; hacerlo simplemente es una ventaja aquí.
XML y SGML es probablemente el mayor dolor, su definición de comentarios es simplemente estúpida. Los comentarios habrían sido triviales para anidar, pero no solo no, sino que está completamente prohibido tener
--
comentarios internos. Desafortunadamente, no sé qué editores tienen un buen soporte para comentar en SGML / XML.fuente
#if _
que funciona bien y se atenúa en mi VS con Re #. Buen consejo!Si bien no es una solución general, y ciertamente no es la ideal, una forma de abordar este problema en particular es usar el lenguaje de procesamiento de plantillas del lado del servidor para hacer comentarios de bloque para elementos de comentarios de código anidados. Esto deja el contenido esencialmente intacto, pero evita enviarlo al navegador del cliente.
Eso no ayuda mucho si el archivo es de otro modo contenido puro y directo que no requiere otro procesamiento del lado del servidor. En ese caso y en el caso más general de comentarios anidados, pregunte por qué quiere hacer eso. En la mayoría de esos casos, uno podría encontrar que la mejor manera de manejarlo es no manejarlo todo. En otras palabras, si desea eliminar una sección, elimínela y deje que el control de versiones se encargue de recordar las diferencias si esa sección como un artefacto alguna vez necesita resucitar.
fuente
En el caso de HTML / XML puede usar una instrucción de procesamiento no existente: vea mi respuesta en SO
fuente
Swift admite comentarios anidados, por lo que "parece que no solo en un idioma los comentarios no pueden anidarse" ya no es una declaración verdadera. Si no está satisfecho con la falta de soporte para comentarios anidados en su lenguaje de programación, le sugiero que pruebe Swift.
Lenguaje de programación rápido: los fundamentos
fuente
El lenguaje de programación D tiene comentarios anidados integrados en:
En otras palabras,
/+
y los+/
comentarios anidan.fuente