stringtranslate.com

Comentario (programación informática)

Una ilustración del código fuente de Java con comentarios de prólogo indicados en rojo y comentarios en línea en verde . El código del programa está en azul .

En programación de computadoras , un comentario es una explicación o anotación legible por el programador en el código fuente de un programa de computadora . Se agregan con el propósito de hacer que el código fuente sea más fácil de entender para los humanos y, por lo general, los compiladores e intérpretes los ignoran . [1] [2] La sintaxis de los comentarios en varios lenguajes de programación varía considerablemente.

A veces los comentarios también se procesan de diversas maneras para generar documentación externa al propio código fuente mediante generadores de documentación , o se utilizan para la integración con sistemas de gestión de código fuente y otros tipos de herramientas de programación externas .

La flexibilidad que proporcionan los comentarios permite un amplio grado de variabilidad, pero las convenciones formales para su uso suelen formar parte de las guías de estilo de programación .

Descripción general

Los comentarios generalmente tienen el formato de comentarios de bloque (también llamados comentarios de prólogo o comentarios de secuencia ) o comentarios de línea (también llamados comentarios en línea ). [3]

Los comentarios de bloque delimitan una región del código fuente que puede abarcar varias líneas o parte de una sola línea. Esta región se especifica con un delimitador de inicio y un delimitador de final . Algunos lenguajes de programación (como MATLAB ) permiten que los comentarios de bloque se aniden recursivamente unos dentro de otros, pero otros (como Java ) no lo hacen. [4] [5] [6]

Los comentarios de línea comienzan con un delimitador de comentarios y continúan hasta el final de la línea o, en algunos casos, comienzan en una columna específica (desplazamiento de línea de caracteres) en el código fuente y continúan hasta el final de la línea. [6]

Algunos lenguajes de programación emplean comentarios de bloque y de línea con diferentes delimitadores de comentarios. Por ejemplo, C++ tiene comentarios de bloque delimitados por /*y */que pueden abarcar varias líneas y comentarios de línea delimitados por //. Otros idiomas solo admiten un tipo de comentario. Por ejemplo, los comentarios de Ada son comentarios de línea: comienzan --y continúan hasta el final de la línea. [6]

Usos

La mejor manera de utilizar los comentarios está sujeta a controversia; diferentes comentaristas han ofrecido puntos de vista variados y a veces opuestos. [7] [8] Hay muchas formas diferentes de escribir comentarios y muchos comentaristas ofrecen consejos contradictorios. [8]

Planificación y revisión

Los comentarios se pueden utilizar como una forma de pseudocódigo para describir la intención antes de escribir el código real. En este caso, debería explicar la lógica detrás del código en lugar del código en sí.

/* recorre todos los elementos devueltos por el servidor (deben procesarse cronológicamente)*/ for ( i = ( numElementsReturned - 1 ); i >= 0 ; i -- ) { /* procesa los datos de cada elemento */ updatePattern ( i , Elementos devueltos [ i ]); }             

Si se deja este tipo de comentario, se simplifica el proceso de revisión al permitir una comparación directa del código con los resultados previstos. Una falacia lógica común es que el código que es fácil de entender hace lo que se supone que debe hacer.

Descripción del código

Los comentarios se pueden utilizar para resumir el código o para explicar la intención del programador. Según esta escuela de pensamiento, reformular el código en un inglés sencillo se considera superfluo; la necesidad de volver a explicar el código puede ser una señal de que es demasiado complejo y debe reescribirse, o que el nombre es incorrecto.

"No documente el código incorrecto: reescríbalo". [9]
"Los buenos comentarios no repiten el código ni lo explican. Aclaran su intención. Los comentarios deben explicar, en un nivel de abstracción más alto que el código, lo que estás intentando hacer". [10]

Los comentarios también se pueden utilizar para explicar por qué un bloque de código no parece ajustarse a las convenciones o mejores prácticas. Esto es especialmente cierto en el caso de proyectos que implican muy poco tiempo de desarrollo o corrección de errores. Por ejemplo:

' La segunda variable está atenuada debido a errores del servidor producidos al reutilizar los datos del formulario. No hay documentación disponible sobre el problema del comportamiento del servidor, por lo que solo debemos codificarlo. vtx = servidor . mappath ( "configuración local" )  

Descripción algorítmica

A veces el código fuente contiene una solución novedosa o notable para un problema específico. En tales casos, los comentarios pueden contener una explicación de la metodología. Dichas explicaciones pueden incluir diagramas y pruebas matemáticas formales. Esto puede constituir una explicación del código, más que una clarificación de su intención; pero otros encargados de mantener la base del código pueden encontrar crucial esa explicación. Esto podría ser especialmente cierto en el caso de dominios problemáticos altamente especializados; o optimizaciones, construcciones o llamadas a funciones raramente utilizadas. [11]

Por ejemplo, un programador puede agregar un comentario para explicar por qué se eligió una ordenación por inserción en lugar de una ordenación rápida , ya que la primera es, en teoría, más lenta que la segunda. Esto podría escribirse de la siguiente manera:

 lista = [ f ( b ), f ( b ), f ( c ), f ( d ), f ( a ), ... ] ; // Necesita una clasificación estable. Además, el rendimiento realmente no importa. inserción_sort ( lista );               

Inclusión de recursos

Se pueden insertar logotipos , diagramas y diagramas de flujo que consisten en construcciones artísticas ASCII en el código fuente con formato de comentario. [12] Además, los avisos de derechos de autor pueden incorporarse dentro del código fuente como comentarios. Los datos binarios también se pueden codificar en comentarios mediante un proceso conocido como codificación de binario a texto , aunque esta práctica es poco común y normalmente se relega a archivos de recursos externos.

El siguiente fragmento de código es un diagrama ASCII simple que muestra el flujo de proceso para un script de administración del sistema contenido en un archivo de script de Windows que se ejecuta en Windows Script Host . Aunque una sección que marca el código aparece como un comentario, el diagrama en sí aparece en realidad en una sección CDATA XML , que técnicamente se considera distinta de los comentarios, pero que puede servir para propósitos similares. [13]

<!-- comenzar: wsf_resource_nodes --> <resource id= "ProcessDiagram000" > <![CDATA[ HostApp (Main_process)  |  V script.wsf (app_cmd) --> ClientApp (async_run, lote_process)  |  |  V  mru.ini (mru_history) ]]> </resource> 

Aunque este diagrama idéntico podría fácilmente haberse incluido como comentario, el ejemplo ilustra un caso en el que un programador puede optar por no utilizar comentarios como forma de incluir recursos en el código fuente. [13]

Metadatos

Los comentarios en un programa de computadora a menudo almacenan metadatos sobre un archivo de programa.

En particular, muchos mantenedores de software incluyen pautas de envío en los comentarios para ayudar a las personas que leen el código fuente de ese programa a enviar cualquier mejora que realicen al mantenedor.

Otros metadatos incluyen: el nombre del creador de la versión original del archivo del programa y la fecha en que se creó la primera versión, el nombre del responsable actual del programa, los nombres de otras personas que han editado el archivo del programa hasta el momento. , la URL de la documentación sobre cómo utilizar el programa, el nombre de la licencia de software para este archivo de programa, etc.

Cuando un algoritmo en alguna sección del programa se basa en una descripción de un libro u otra referencia, se pueden usar comentarios para dar el número de página y el título del libro o Solicitud de comentarios u otra referencia.

Depuración

Una práctica común de los desarrolladores es comentar un fragmento de código, es decir, agregar una sintaxis de comentario que hace que ese bloque de código se convierta en un comentario, de modo que no se ejecute en el programa final. Esto se puede hacer para excluir ciertos fragmentos de código del programa final o (más comúnmente) se puede usar para encontrar la fuente de un error. Al comentar sistemáticamente y ejecutar partes del programa, se puede determinar el origen de un error, lo que permite corregirlo.

Muchos IDE permiten agregar o eliminar rápidamente dichos comentarios con opciones de menú únicas o combinaciones de teclas. El programador sólo tiene que marcar la parte del texto que quiere (des)comentar y elegir la opción adecuada.

Generación automática de documentación.

Las herramientas de programación a veces almacenan documentación y metadatos en comentarios. [14] Estos pueden incluir posiciones de inserción para la inclusión automática del archivo de encabezado, comandos para configurar el modo de resaltado de sintaxis del archivo , [15] o el número de revisión del archivo . [16] Estos comentarios de control funcional también se denominan comúnmente anotaciones . Mantener la documentación dentro de los comentarios del código fuente se considera una forma de simplificar el proceso de documentación, así como de aumentar las posibilidades de que la documentación se mantenga actualizada con los cambios en el código. [17]

Ejemplos de generadores de documentación incluyen los programas Javadoc para usar con Java , Ddoc para D , Doxygen para C , C++ , Java, IDL , Visual Expert para PL/SQL , Transact-SQL , PowerBuilder y PHPDoc para PHP . Las formas de cadena de documentación son compatibles con Python , Lisp , Elixir y Clojure . [18]

C# , F# y Visual Basic .NET implementan una característica similar llamada "Comentarios XML" que IntelliSense lee desde el ensamblado .NET compilado . [19]

Extensión de sintaxis

Ocasionalmente, los elementos de sintaxis que originalmente estaban destinados a ser comentarios se reutilizan para transmitir información adicional a un programa, como " comentarios condicionales ". Estos "comentarios candentes" pueden ser la única solución práctica que mantiene la compatibilidad con versiones anteriores, pero en general se los considera una chapuza . [20]

Usos directivos

Hay casos en los que los caracteres de comentario normales se utilizan para crear una directiva especial para un editor o intérprete.

Dos ejemplos de esto dirigiendo a un intérprete son:

El siguiente script para un sistema tipo Unix muestra ambos usos:

#!/usr/bin/env python3 # -*- codificación: UTF-8 -*- imprimir ( "Prueba" )

Algo similar es el uso de comentarios en C para comunicar a un compilador que una "falla" predeterminada en una declaración de caso se ha realizado deliberadamente:

cambiar ( comando ) {   caso CMD_SHOW_HELP_AND_EXIT :  do_show_help (); /* Caer a través */ caso CMD_EXIT :  hacer_salir (); romper ; caso CMD_OTHER :  hacer_otro (); romper ; /* ... etc. ... */ }

Insertar un /* Fall thru */comentario de este tipo para lectores humanos ya era una convención común, pero en 2017 el compilador gcc comenzó a buscar estos (u otros indicios de intención deliberada) y, si no los encontraba, emitía: "advertencia: esta declaración puede fallar". [23]

Muchos editores e IDE leerán comentarios con formato especial. Por ejemplo, la característica "modeline" de Vim ; lo que cambiaría su manejo de pestañas al editar una fuente con este comentario incluido cerca de la parte superior del archivo:

# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4

El alivio del estrés

A veces, los programadores agregan comentarios como una forma de aliviar el estrés comentando sobre herramientas de desarrollo, competidores, empleadores, condiciones laborales o la calidad del código mismo. [24] La aparición de este fenómeno se puede ver fácilmente en los recursos en línea que rastrean las malas palabras en el código fuente. [25]

Vistas normativas

Existen varios puntos de vista normativos y opiniones de larga data sobre el uso adecuado de los comentarios en el código fuente. [26] [27] Algunos de estos son informales y se basan en preferencias personales, mientras que otros se publican o promulgan como pautas formales para una comunidad en particular. [28]

Necesidad de comentarios

Los expertos tienen diferentes puntos de vista sobre si los comentarios son apropiados en el código fuente y cuándo. [9] [29] Algunos afirman que el código fuente debe escribirse con pocos comentarios, basándose en que el código fuente debe explicarse por sí mismo o documentarse por sí mismo . [9] Otros sugieren que el código debería comentarse extensamente (no es raro que más del 50% de los caracteres que no son espacios en blanco en el código fuente estén contenidos en comentarios). [30] [31]

Entre estos puntos de vista está la afirmación de que los comentarios no son ni beneficiosos ni perjudiciales por sí mismos, y lo que importa es que sean correctos y estén sincronizados con el código fuente, y que se omitan si son superfluos, excesivos, difíciles de mantener o inútiles. [32] [33]

Los comentarios a veces se utilizan para documentar contratos en el enfoque de programación de diseño por contrato .

Nivel de detalle

Dependiendo del público objetivo del código y otras consideraciones, el nivel de detalle y descripción puede variar considerablemente.

Por ejemplo, el siguiente comentario de Java sería adecuado en un texto introductorio diseñado para enseñar programación inicial:

Cadena s = "Wikipedia" ; /* Asigna el valor "Wikipedia" a la variable s. */    

Sin embargo, este nivel de detalle no sería apropiado en el contexto del código de producción u otras situaciones que involucren a desarrolladores experimentados. Descripciones tan rudimentarias son incompatibles con la directriz: "Buenos comentarios... aclaran la intención". [10] Además, para entornos de codificación profesionales, el nivel de detalle normalmente está bien definido para cumplir con un requisito de rendimiento específico definido por las operaciones comerciales. [31]

Estilos

Hay muchas alternativas estilísticas disponibles al considerar cómo deberían aparecer los comentarios en el código fuente. Para proyectos más grandes que involucran a un equipo de desarrolladores, los estilos de comentarios se acuerdan antes de que comience el proyecto o evolucionan como una cuestión de convención o necesidad a medida que el proyecto crece. Por lo general, los programadores prefieren estilos que sean consistentes, no obstructivos, fáciles de modificar y difíciles de romper. [34]

Bloquear comentario

Los siguientes fragmentos de código en C demuestran sólo un pequeño ejemplo de cómo los comentarios pueden variar estilísticamente, sin dejar de transmitir la misma información básica:

/*  Este es el cuerpo del comentario.  Variación uno. */
/***************************\ * * * Este es el cuerpo del comentario. * *Variación Dos. * * * \***************************/

Factores como las preferencias personales, la flexibilidad de las herramientas de programación y otras consideraciones tienden a influir en las variantes estilísticas utilizadas en el código fuente. Por ejemplo, la Variación Dos podría no ser preferida entre los programadores que no tienen editores de código fuente que puedan automatizar la alineación y la apariencia visual del texto en los comentarios.

El consultor de software y comentarista de tecnología Allen Holub [35] es un experto que aboga por alinear los bordes izquierdos de los comentarios: [36]

 /* Este es el estilo recomendado por Holub para C y C++.  *Se demuestra en ''Enough Rope'', en la regla 29.  */
 /* Esta es otra forma de hacerlo, también en C. ** Es más fácil de hacer en editores que no aplican sangría automáticamente desde la segunda ** hasta la última línea del comentario a un espacio de la primera. **También se usa en el libro de Holub, en la regla 31. */

El uso de /* y */ como delimitadores de comentarios de bloque se heredó de PL/I al lenguaje de programación B, el predecesor inmediato del lenguaje de programación C. [37]

Comentarios de línea

Los comentarios de línea generalmente utilizan un delimitador arbitrario o una secuencia de tokens para indicar el comienzo de un comentario y un carácter de nueva línea para indicar el final de un comentario.

En este ejemplo, se ignora todo el texto desde los caracteres ASCII // hasta el final de la línea.

// ------------------------- // Este es el cuerpo del comentario. // -------------------------

A menudo, un comentario de este tipo tiene que comenzar en el extremo izquierdo y extenderse a toda la línea. Sin embargo, en muchos idiomas, también es posible poner un comentario en línea con una línea de comando para agregarle un comentario, como en este ejemplo de Perl:

imprimir $s . "\n" ; # Agregar un carácter de nueva línea después de imprimir    

Si un lenguaje permite tanto comentarios de línea como comentarios de bloque, los equipos de programación pueden decidir una convención para usarlos de manera diferente: por ejemplo, comentarios de línea sólo para comentarios menores y comentarios de bloque para describir abstracciones de nivel superior.

Etiquetas

Los programadores pueden utilizar etiquetas informales en los comentarios para ayudar a indexar problemas comunes. Luego es posible buscarlos con herramientas de programación comunes, como la utilidad grep de Unix o incluso resaltar la sintaxis en los editores de texto . A veces se los denomina "etiquetas de código" [38] [39] o "tokens", y las herramientas de desarrollo pueden incluso ayudarle a enumerarlos todos. [40]

Estas etiquetas difieren mucho, pero pueden incluir:

Ejemplos

Comparación

Las convenciones tipográficas para especificar comentarios varían ampliamente. Además, los lenguajes de programación individuales a veces ofrecen variantes únicas.

ada

El lenguaje de programación Ada utiliza '--' para indicar un comentario hasta el final de la línea.

Por ejemplo:

  - la tarea del controlador de tránsito aéreo toma solicitudes para el tipo de tarea  de despegue y aterrizaje Controlador ( My_Runway : Runway_Access ) es - entradas de tareas para mensajes sincrónicos que pasan la entrada Request_Takeoff ( ID : en Airplane_ID ; Despegue : fuera de Runway_Access ); entrada Request_Approach ( ID : en Airplane_ID ; Approach : fuera Runway_Access ); controlador final ;                 

APL

APL utiliza para indicar un comentario hasta el final de la línea.

Por ejemplo:

⍝ Ahora suma los números: c a + b ⍝ suma 

En dialectos que tienen las primitivas ("izquierda") y ("derecha"), los comentarios a menudo pueden estar dentro de declaraciones o separadas, en forma de cadenas ignoradas:

d 2 × c 'donde' c a + 'enlazado' b    

AppleScript

Esta sección del código AppleScript muestra los dos estilos de comentarios utilizados en ese idioma.

(* Este programa muestra un saludo. *) al  saludar ( myGreeting ),  muestra el cuadro de diálogo  myGreeting  &  "world!" saludo final - Mostrar el saludo saludar ( "Hola" )

BÁSICO

En este clásico fragmento de código BASIC temprano, la palabra clave REM ( "Remark" ) se utiliza para agregar comentarios.

10 REM Este programa BÁSICO muestra el uso de las declaraciones PRINT y GOTO. 15 REM Llena la pantalla con la frase "HOLA" 20 PRINT "HOLA" 30 GOTO 20      

En Microsoft BASIC posteriores, incluidos Quick Basic , Q Basic , Visual Basic , Visual Basic .NET y VB Script ; y en descendientes como FreeBASIC y Gambas, cualquier texto en una línea después de un carácter ' (apóstrofe) también se trata como un comentario.

Un ejemplo en Visual Basic .NET:

Clase pública Form1 Sub botón privado1_Click ( remitente como objeto , e como EventArgs ) Maneja el botón1 . Haga clic en ' El siguiente código se ejecuta cuando el usuario ' hace clic en el botón en la ventana del programa. Los comentarios rem todavía existen.                Buzon de mensaje . Show ( "Hola, mundo" ) 'Mostrar una ventana emergente con un saludo End Sub End Class    

C

Este fragmento de código C demuestra el uso de un comentario de prólogo o "comentario de bloque" para describir el propósito de una declaración condicional . El comentario explica términos y conceptos clave e incluye una breve firma del programador autor del código.

 /*  * Verifique si estamos por encima de nuestro límite máximo de procesos, pero asegúrese de  * excluir la raíz. Esto es necesario para hacer posible que los usuarios y  * amigos establezcan el límite de procesos por usuario en algo menor  * que la cantidad de procesos que está ejecutando root. -- Rik  */ if ( atomic_read ( & p -> usuario -> procesos ) >= p -> rlim [ RLIMIT_NPROC ]. rlim_cur && ! capaz ( CAP_SYS_ADMIN ) && ! capaz ( CAP_SYS_RESOURCE )) goto bad_fork_free ;          

Desde C99, también es posible utilizar la sintaxis // de C++, que indica un comentario de una sola línea.


La disponibilidad de comentarios de bloque permite marcar rupturas estructurales, es decir, violaciones admisibles de la regla de entrada y salida única de la programación estructurada , de forma visible, como en el siguiente ejemplo:

Borde estático edge_any ( Nodo n , Nodo m ) { // Devuelve si hay algún borde entre los nodos $n y $m. Borde e ; for ( e = n -> bordes ; e ; e = e -> siguiente ) { if ( e -> dst == m ) { /*********/ return e ; } } for ( e = m -> bordes ; e ; e = e -> siguiente ) { if ( e -> dst == n ) { /*****/ break ; } } devolver mi ; }                                        

En muchos idiomas que carecen de un comentario de bloque, por ejemplo, awk , puedes usar secuencias de separadores de declaraciones como ;en su lugar. Pero es imposible en lenguajes que usan sangría como una indicación rígida de la estructura de bloque prevista, como Python .

Configuración de Cisco IOS e IOS-XE

El signo de exclamación ( ! ) se puede utilizar para marcar comentarios en el modo de configuración de un enrutador Cisco; sin embargo, dichos comentarios no se guardan en la memoria no volátil (que contiene la configuración de inicio), ni se muestran mediante el comando "show run". . [41] [42]

Es posible insertar contenido legible por humanos que en realidad forma parte de la configuración y se puede guardar en la configuración de inicio de NVRAM a través de:

! Pegue el texto a continuación para redirigir el tráfico manualmenteconfiguración tintgi0/2no cerrarruta ip 0.0.0.0 0.0.0.0 gi0/2 nombre ISP2sin ruta ip 0.0.0.0 0.0.0.0 gi0/1 nombre ISP1intgi0/1cerrarsalida

Fusión fría

ColdFusion utiliza comentarios similares a los comentarios HTML , pero en lugar de dos guiones, utiliza tres. Estos comentarios son capturados por el motor ColdFusion y no impresos en el navegador.

Estos comentarios se pueden anidar.

 <!--- Esto imprime "Hola mundo" en el navegador.  <!--- Este es un comentario utilizado dentro del primero.  ---> --->  <cfoutput> Hola mundo < br  />  </cfoutput>

D

D utiliza comentarios de estilo C++, así como comentarios multilínea anidados de estilo D, que comienzan con '/+' y terminan con '+/'.

// Este es un comentario de una sola línea. /* Este es un comentario de varias líneas.*/ /+ Este es un  /+ anidado +/  comentario +/

Fortrán IV

Este fragmento de código de Fortran IV demuestra cómo se usan los comentarios en ese lenguaje, que está muy orientado a columnas. Una letra "C" en la columna 1 hace que toda la línea se trate como un comentario.

C C Las líneas que comienzan con 'C' (en la primera columna o 'comentario') son comentarios C ESCRIBIR ( 6 , 610 )  610 FORMATO ( 12 H HOLA MUNDO ) FIN        

Tenga en cuenta que las columnas de una línea se tratan como cuatro campos: del 1 al 5 es el campo de etiqueta, 6 hace que la línea se tome como una continuación de la declaración anterior; y las declaraciones y afirmaciones van del 7 al 72.

Fortran 90

Este fragmento de código Fortran demuestra cómo se usan los comentarios en ese idioma, y ​​los comentarios mismos describen las reglas básicas de formato.

!* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! * Todos los caracteres después de un signo de exclamación se consideran comentarios * !* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * programa comment_test print '( A ) ' , ' Hola mundo' ! Fortran 90 introdujo la opción de comentarios en línea. programa final    

Haskell

Los comentarios de línea en Haskell comienzan con '--' (dos guiones) hasta el final de la línea, y los comentarios de varias líneas comienzan con '{-' y terminan con '-}'.

{- este es un comentario en más líneas -} -- y este es un comentario en una línea putStrLn "Wikipedia" -- este es otro comentario  

Haskell también proporciona un método de programación alfabetizado para comentar conocido como "Bird Style". [43] En esto, todas las líneas que comienzan con > se interpretan como código, todo lo demás se considera un comentario. Un requisito adicional es que siempre dejes una línea en blanco antes y después del bloque de código:

En estilo Bird debes dejar un espacio en blanco antes del código.> hecho :: Entero -> Entero > hecho 0 = 1 > hecho ( n + 1 ) = ( n + 1 ) * hecho n             Y también debes dejar una línea en blanco después del código.

La programación alfabetizada también se puede realizar en Haskell, utilizando LaTeX . Se puede utilizar el entorno de código en lugar del estilo de Richard Bird: en el estilo LaTeX esto es equivalente al ejemplo anterior, el entorno de código podría definirse en el preámbulo de LaTeX. Aquí hay una definición simple:

\usepackage { textualmente } \newenvironment { código }{ \verbatim }{ \endverbatim }

más tarde

% el archivo fuente LaTeX
El \verbo |fact n| la llamada a función calcula $ n ! $ si $ n \ge 0 $ , aquí hay una definición: \\ \begin { code } fact :: Entero -> Entero fact 0 = 1 fact ( n + 1 ) = ( n + 1 ) * fact n \end { código }
Aquí más explicaciones usando el marcado \LaTeX {}              

Java

Este fragmento de código Java muestra un comentario de bloque utilizado para describir el setToolTipTextmétodo. El formato es coherente con los estándares Javadoc de Sun Microsystems . El comentario está diseñado para ser leído por el procesador Javadoc.

/** * Este es un comentario de bloque en Java. * El método setToolTipText registra el texto para mostrar en una información sobre herramientas. * El texto se muestra cuando el cursor permanece sobre el componente. * * @param text La cadena que se mostrará. Si 'texto' es nulo, * la información sobre herramientas está desactivada para este componente. */ public void setToolTipText ( String text ) { // Este es un comentario en línea en Java. TODO: Escribe código para este método. }     

javascript

JavaScript usa // para preceder a los comentarios y /* */ para comentarios de varias líneas.

// Un comentario de JavaScript de una sola línea var iNum = 100 ; var iDos = 2 ; // Un comentario al final de la línea /* comentario JavaScript de varias líneas */       

lua

El lenguaje de programación Lua utiliza guiones dobles --para comentarios de una sola línea de manera similar a los lenguajes Ada , Eiffel , Haskell , SQL y VHDL . Lua también tiene comentarios en bloque, que comienzan --[[y continúan hasta un cierre.]]

Por ejemplo:

--[[Un comentario largo de varias líneas ]] print ( 20 )  -- imprime el resultado

Una técnica común para comentar un fragmento de código, [44] es encerrar el código entre --[[y --]], como se muestra a continuación:

--[[ print(10) --]] -- ninguna acción (comentado)

En este caso, es posible reactivar el código agregando un guión único a la primera línea:

---[[ imprimir ( 10 ) --]] --> 10

En el primer ejemplo, --[[en la primera línea comienza un comentario largo y los dos guiones de la última línea todavía están dentro de ese comentario. En el segundo ejemplo, la secuencia ---[[comienza con un comentario normal de una sola línea, de modo que la primera y la última línea se convierten en comentarios independientes. En este caso, los printcomentarios están fuera. En este caso, la última línea se convierte en un comentario independiente, ya que comienza con --.

Los comentarios largos en Lua pueden ser más complejos que estos, como puedes leer en la sección llamada "Cadenas largas" cf Programación en Lua .

MATLAB

En el lenguaje de programación MATLAB , el carácter '%' indica un comentario de una sola línea. Los comentarios de varias líneas también están disponibles entre corchetes %{ y %} y se pueden anidar, por ejemplo

% Estas son las derivadas de cada término d = [ 0 - 1 0 ];    %{   %{  (Ejemplo de comentario anidado, la sangría es para cosmética (y se ignora).) %   } Formamos la secuencia , siguiendo la fórmula de Taylor . Tenga en cuenta que estamos operando con un vector . %} seq = d .* ( x - c ) .^ n ./ ( factorial ( n ))                      % Sumamos para obtener la aproximación de Taylor approx = suma ( seq )  

nim

Nim usa el carácter '#' para comentarios en línea. Los comentarios de bloque de varias líneas se abren con '#[' y se cierran con ']#'. Se pueden anidar comentarios de bloques de varias líneas.

Nim también tiene comentarios de documentación que utilizan marcas mixtas de Markdown y ReStructuredText . Los comentarios de la documentación en línea usan '##' y los comentarios de la documentación en bloque de varias líneas se abren con '##[' y se cierran con ']##'. El compilador puede generar documentación HTML , LaTeX y JSON a partir de los comentarios de la documentación. Los comentarios de la documentación son parte del árbol de sintaxis abstracta y se pueden extraer mediante macros. [45]

## Documentación del módulo *ReSTructuredText* y **MarkDown** # Este es un comentario, pero no es un comentario de documentación.tipo Gatito = objeto ## Documentación de tipo edad : int ## Documentación de campo       proc purr ( self : Kitten ) = ## Documentación de la función echo "Purr Purr" # Este es un comentario, pero no es un comentario de documentación.       # Este es un comentario, pero no es un comentario de documentación.

OCaml

OCaml utiliza comentarios anidables, lo cual resulta útil al comentar un bloque de código.

codeLine (* nivel de comentario 1(*nivel de comentario 2*)*)

Pascal, Delfos

En Pascal y Delphi , los comentarios están delimitados por '{... }'. Las líneas de comentarios también pueden comenzar con '\\'. Como alternativa, para computadoras que no admiten estos caracteres, se permite '(* ... *)'. [46]

En la familia de lenguajes más moderna de Niklaus Wirth (incluidos Modula-2 y Oberon ), los comentarios están delimitados por '(* ... *)'. [47] [48]

Por ejemplo:

(* diagonales de prueba *) diferenciacolumna := pruebaColumna - columna ; si ( fila + diferenciacolumna = filaprueba ) o .......           

Los comentarios se pueden anidar. // se puede incluir en un {} y {} se puede incluir en un (**).

perla

Los comentarios de línea en Perl y muchos otros lenguajes de programación comienzan con un símbolo de almohadilla (#).

# Un ejemplo sencillo # my $s = "Wikipedia" ; # Establece la variable s en "Wikipedia". imprimir $s . "\n" ; # Agregar un carácter de nueva línea después de imprimir        

En lugar de una construcción de comentarios de bloque normal, Perl utiliza Plain Old Documentation , un lenguaje de marcado para programación alfabetizada , [49] por ejemplo: [50]

=elemento Pod::List-E<gt>nuevo()Crea un nuevo objeto de lista. Las propiedades se pueden especificar mediante una referencia hash como esta: mi $lista = Pod::List->new({ -start => $., -indent => 4 });Consulte los métodos/propiedades individuales para obtener más detalles.= cortarsub nuevo { mi $this = cambio ; mi $clase = ref ( $this ) || $esto ; mis %params = @_ ; mi $self = { %params }; bendito $self , $class ; $self -> inicializar (); devolver $ uno mismo ; }                          

R

R solo admite comentarios en línea iniciados con el carácter almohadilla (#).

# Este es un comentario print ( "Esto no es un comentario" ) # Este es otro comentario 

rakú

Raku (anteriormente llamado Perl 6) usa los mismos comentarios de línea y comentarios de documentación POD que Perl normal (consulte la sección Perl anterior), pero agrega un tipo de comentario de bloque configurable: "comentarios multilínea/incrustados". [51]

Estos comienzan con un carácter de almohadilla, seguido de una comilla invertida, y luego un carácter entre corchetes de apertura, y terminan con el carácter entre corchetes de cierre correspondiente. [51] El contenido no sólo puede abarcar varias líneas, sino que también puede incrustarse en línea.

#`{{ "comentando" esta versión toggle-case(Str:D $s)Alterna entre mayúsculas y minúsculas de cada carácter en una cadena: my Str $toggled-string = toggle-case("¡MI NOMBRE ES MICHAEL!");}}sub  toggle-case ( Str:D  $s ) #`(esta versión de parens se usa ahora) { ...}

PHP

Los comentarios en PHP pueden estar en estilo C++ (tanto en línea como en bloque) o usar hashes. PHPDoc es un estilo adaptado de Javadoc y es un estándar común para documentar código PHP.

A partir de PHP 8, el signo # solo puede significar un comentario si no va seguido inmediatamente de '['. De lo contrario, significará un atributo de función, que se ejecuta hasta ']':

/** * Esta clase contiene una documentación de muestra. * * @author Desconocido */ #[ Atributo ] clase  MiAtributo  {  const  VALOR  =  'valor' ;  // Este es un comentario en línea. Comienza con '//', como en C++.  valor $ privado  ; # Este es un comentario en línea de estilo Unix, que comienza con '#'. función pública __construct ( $valor = nulo ) { $this -> valor = $valor ; } /*  Este es un comentario de varias líneas.             Estos comentarios no se pueden anidar.  */}

Potencia Shell

Comentarios en Windows PowerShell

# Comentario de una sola línea Write-Host  "¡Hola mundo!"<# Comentario de varias  líneas  #>Write-Host  "¡Adiós mundo!"

Pitón

Los comentarios en línea en Python usan el carácter almohadilla (#), como en los dos ejemplos de este código:

# Este programa imprime "Hola mundo" en la impresión de pantalla ( "¡Hola mundo!" )  # Tenga en cuenta la nueva sintaxis

Los comentarios de bloque, tal como se definen en este artículo, técnicamente no existen en Python. [52] Se puede utilizar un literal de cadena simple representado por una cadena entre comillas triples, [53] pero el intérprete no lo ignora de la misma manera que lo hace el comentario "#". [52] En los ejemplos siguientes, las cadenas entre comillas dobles triples actúan de esta manera como comentarios, pero también se tratan como cadenas de documentación :

""" Suponiendo que se trata del archivo mymodule.py, entonces esta cadena, al ser la primera declaración en el archivo, se convertirá en la cadena de documentación del módulo "mymodule" cuando se importe el archivo. """clase  MiClase : """La cadena de documentación de la clase"""  def  my_method ( self ): """La cadena de documentación del método""" def  my_function (): """La cadena de documentación de la función""" 

Rubí

Los comentarios en línea en Ruby comienzan con el carácter #.

Para crear un comentario de varias líneas, se debe colocar "=begin" al comienzo de una línea, y luego se ignora todo hasta "=end" que comienza una línea. Incluir un espacio después del signo igual en este caso genera un error de sintaxis.

pone "Esto no es un comentario" # este es un comentariopone "Esto no es un comentario" =comenzarlo que sea que vaya en estas lineases solo para el lector humano=finpone "Esto no es un comentario" 

SQL

Los comentarios estándar en SQL están en formato de una sola línea y utilizan dos guiones:

- Este es un comentario de una sola línea , seguido de una segunda línea SELECCIONE CONTAR ( * ) DE Autores DONDE Autores . nombre = 'Smith' ; -- Nota: sólo queremos 'smith' -- este comentario aparece después del código SQL         

Alternativamente, Transact-SQL , MySQL , SQLite , PostgreSQL y Oracle admiten una sintaxis de formato de comentario idéntica al estilo de "comentario de bloque" utilizado en la sintaxis de C y Java . [54] [55] [56] [57] [58]

MySQL también admite comentarios desde el carácter almohadilla (#) hasta el final de la línea.

Rápido

Los comentarios de una sola línea comienzan con dos barras diagonales (//):

// Este es un comentario.

Los comentarios de varias líneas comienzan con una barra diagonal seguida de un asterisco (/*) y terminan con un asterisco seguido de una barra diagonal (*/):

/* Esto también es un comentario pero está escrito en varias líneas. */

Los comentarios de varias líneas en Swift se pueden anidar dentro de otros comentarios de varias líneas. Para escribir comentarios anidados, inicie un bloque de comentarios de varias líneas y luego inicie un segundo comentario de varias líneas dentro del primer bloque. A continuación se cierra el segundo bloque, seguido del primero:

/* Este es el comienzo del primer comentario multilínea. /* Este es el segundo comentario multilínea anidado. */ Este es el final del primer comentario de varias líneas. */

XML (o HTML)

Los comentarios en XML (o HTML) se introducen con

< !--

y puede extenderse en varias líneas hasta el terminador,

-->

Por ejemplo,

<!-- seleccione el contexto aquí --> <param name= "context" value= "public" />   

Por compatibilidad con SGML , la cadena "--" (guión doble) no está permitida dentro de los comentarios.

Temas de seguridad

En los idiomas interpretados, los comentarios son visibles para el usuario final del programa. En algunos casos, como las secciones de código que están "comentadas", esto puede presentar una vulnerabilidad de seguridad . [59]

Ver también

notas y referencias

  1. ^ El código fuente se puede dividir en código de programa (que consta de instrucciones traducibles por máquina); y comentarios (que incluyen notas legibles por humanos y otros tipos de anotaciones en apoyo del código del programa). Penny Grubb, Armstrong Takang (2003). Mantenimiento de software: conceptos y práctica . Científico mundial. págs. 7, comience 120–121. ISBN 978-981-238-426-3.
  2. ^ Para los fines de este artículo, los comentarios del lenguaje de programación se tratan como indistintos de los comentarios que aparecen en lenguajes de marcado , archivos de configuración y otros contextos similares. Además, el lenguaje de marcado suele estar estrechamente integrado con el código del lenguaje de programación, especialmente en el contexto de la generación de código . Véase, por ejemplo, Ganguli, Madhushree (2002). Haciendo uso de Jsp . Nueva York: Wiley. ISBN 978-0-471-21974-3., Hewitt, Eben (2003). Java para desarrolladores de Coldfusion . Upper Saddle River: Educación Pearson. ISBN 978-0-13-046180-3.
  3. ^ Dixit, JB (2003). Fundamentos de Computación y Programación en C. Publicaciones Laxmi. ISBN 978-81-7008-882-0.
  4. ^ Higham, Desmond (2005). GuíaMATLAB . SIAM. ISBN 978-0-89871-578-1.
  5. ^ Vermeulen, Al (2000). Los elementos del estilo Java. Prensa de la Universidad de Cambridge. ISBN 978-0-521-77768-1.
  6. ^ abc "Usando el comentario correcto en Java". 2000-03-04 . Consultado el 24 de julio de 2007 .
  7. ^ WR, Dietrich (2003). Reconocimiento de patrones aplicado: algoritmos e implementación en C++ . Saltador. ISBN 978-3-528-35558-6.ofrece puntos de vista sobre el uso adecuado de los comentarios en el código fuente. pag. 66.
  8. ^ ab Keyes, Jessica (2003). Manual de ingeniería de software . Prensa CRC. ISBN 978-0-8493-1479-7.analiza los comentarios y la "Ciencia de la documentación" p. 256.
  9. ^ abc Los elementos del estilo de programación , Kernighan & Plauger
  10. ^ ab Código completo , McConnell
  11. ^ Spinellis, Diomidis (2003). Lectura de código: la perspectiva del código abierto . Addison-Wesley. ISBN 978-0-201-79940-8.
  12. ^ "CodePlotter 1.6: agregue y edite diagramas en su código con esta herramienta similar a Visio". Archivado desde el original el 14 de julio de 2007 . Consultado el 24 de julio de 2007 .
  13. ^ ab Niederst, Jennifer (2006). Diseño web en pocas palabras: una referencia rápida de escritorio . O'Reilly. ISBN 978-0-596-00987-8.A veces, la diferencia entre un "comentario" y otros elementos sintácticos de un lenguaje de programación o de marcado conlleva matices sutiles. Niederst indica una de esas situaciones al afirmar: "Desafortunadamente, el software XML considera los comentarios como información sin importancia y puede simplemente eliminar los comentarios de un documento antes de procesarlo. Para evitar este problema, utilice una sección CDATA XML en su lugar".
  14. ^ Véase, por ejemplo, Wynne-Powell, Rod (2008). Mac OS X para fotógrafos: flujo de trabajo de imágenes optimizado para usuarios de Mac. Oxford: Prensa focal. pag. 243.ISBN _ 978-0-240-52027-8.
  15. ^ Cordero, Linda (1998). Aprendiendo el editor VI. Sebastopol: O'Reilly & Associates. ISBN 978-1-56592-426-0.describe el uso de la sintaxis modeline en los archivos de configuración de Vim.
  16. ^ Véase, por ejemplo, Berlín, Daniel (2006). Subversión práctica, segunda edición . Berkeley: Prensa. pag. 168.ISBN _ 978-1-59059-753-8.
  17. ^ Ambler, Scott (2004). The Object Primer: desarrollo ágil basado en modelos con UML 2.0 . Prensa de la Universidad de Cambridge. ISBN 978-1-397-80521-8.
  18. ^ Definición de función con cadena de documentación en Clojure
  19. ^ Murach. C # 2005 . pag. 56.
  20. ^ c2: Comentarios calientes
  21. ^ "Codificación de clase". Rubí . ruby-lang.org . Consultado el 5 de diciembre de 2018 .
  22. ^ "PEP 263: definición de codificaciones de código fuente de Python". Python.org . Consultado el 5 de diciembre de 2018 .
  23. ^ Polacek, Marek (10 de marzo de 2017). "-Wimplicit-fallthrough en GCC 7". Desarrollador de Red Hat . Sombrero rojo . Consultado el 10 de febrero de 2019 .
  24. ^ Lisa Eadicicco (27 de marzo de 2014). "Los programadores de Microsoft ocultaron un montón de malas palabras en los primeros códigos de software". Business Insider Australia . Archivado desde el original el 29 de diciembre de 2016.
  25. ^ (ver, por ejemplo, Linux Swear Count).
  26. ^ Goodliffe, Pete (2006). Código artesanal . San Francisco: No Starch Press. ISBN 978-1-59327-119-0.
  27. ^ Smith, T. (1991). Principios y técnicas de programación intermedia utilizando Pascal . Belmont: Pub Oeste. ISBN del condado 978-0-314-66314-6.
  28. ^ Véase, por ejemplo, Koletzke, Peter (2000). Informes y formularios avanzados para desarrolladores de Oracle . Berkeley: Osborne/McGraw-Hill. ISBN 978-0-07-212048-6.página 65.
  29. ^ "Peor práctica: malos comentarios" . Consultado el 24 de julio de 2007 .
  30. ^ Morelli, Ralph (2006). Java, Java, Java: resolución de problemas orientada a objetos . Universidad Prentice Hall. ISBN 978-0-13-147434-5.
  31. ^ ab "Cómo escribir comentarios de documentos para la herramienta Javadoc" . Consultado el 24 de julio de 2007 .Las pautas de Javadoc especifican que los comentarios son cruciales para la plataforma. Además, el nivel apropiado de detalle está bastante bien definido: "Dedicamos tiempo y esfuerzo a centrarnos en especificar condiciones límite, rangos de argumentos y casos extremos en lugar de definir términos de programación comunes, escribir resúmenes conceptuales e incluir ejemplos para desarrolladores".
  32. ^ Yourdon, Edward (2007). Técnicas de estructura y diseño de programas . Universidad de Michigan. 013901702X.Los comentarios inexistentes pueden dificultar la comprensión del código, pero pueden ser perjudiciales si son obsoletos, redundantes, incorrectos o de otro modo dificultan la comprensión del propósito previsto para el código fuente.
  33. ^ Dewhurst, Stephen C (2002). Errores de C++: evitar problemas comunes en la codificación y el diseño . Profesional de Addison-Wesley. ISBN 978-0-321-12518-7.
  34. ^ "Estilo de codificación". Archivado desde el original el 8 de agosto de 2007 . Consultado el 24 de julio de 2007 .
  35. ^ "Allen Holub". Archivado desde el original el 20 de julio de 2007 . Consultado el 24 de julio de 2007 .
  36. ^ Allen Holub, Suficiente cuerda para dispararse en el pie , ISBN 0-07-029689-8 , 1995, McGraw-Hill 
  37. ^ Ken Thompson. "Referencia de los usuarios a B" . Consultado el 21 de julio de 2017 .
  38. ^ "PEP 0350 - Etiquetas de código", Python Software Foundation
  39. ^ "Nunca olvide nada antes, después y durante la codificación", uso de comentarios de "etiqueta de código" como restos productivos
  40. ^ "Uso de la lista de tareas", msdn.microsoft.com
  41. ^ "Deje un comentario en running-config". Cisco Learning Network (foro de discusión) .
  42. ^ "Guía de configuración de administración de archivos de configuración, Cisco IOS XE versión 3S (serie ASR 900)".
  43. ^ "Programación alfabetizada". haskell.org .
  44. ^ "Programación en Lua 1.3". www.Lua.org . Consultado el 8 de noviembre de 2017 .
  45. ^ macros.extractDocCommentsAndRunnables
  46. ^ Kathleen Jensen, Niklaus Wirth (1985). Manual e informe del usuario de Pascal . Springer-Verlag. ISBN 0-387-96048-1.
  47. ^ NiklausWirth (1983). Programación en Modula-2 . Springer-Verlag. ISBN 0-387-15078-1.
  48. ^ * Martín Reiser, Niklaus Wirth (1992). Programación en Oberón . Addison-Wesley. ISBN 0-201-56543-9.
  49. ^ "perlpod: el formato de documentación antiguo" . Consultado el 12 de septiembre de 2011 .
  50. ^ "Pod::ParseUtils: ayudas para el análisis y la conversión de POD" . Consultado el 12 de septiembre de 2011 .
  51. ^ ab "Documentación de Perl 6: sintaxis (comentarios)" . Consultado el 6 de abril de 2017 .
  52. ^ ab "Sintaxis básica de Python 3". Archivado desde el original el 19 de agosto de 2021 . Consultado el 25 de febrero de 2019 . Las comillas triples se tratan como cadenas normales, con la excepción de que pueden abarcar varias líneas. Por cadenas regulares quiero decir que si no están asignadas a una variable, serán recolectadas inmediatamente como basura tan pronto como se ejecute el código. por lo tanto, el intérprete no los ignora de la misma manera que #un comentario.
  53. ^ "Consejo de Python: puede utilizar cadenas de varias líneas como comentarios de varias líneas", 11 de septiembre de 2011, Guido van Rossum
  54. ^ Talmage, Ronald R. (1999). Microsoft SQL Server 7. Publicación Prima. ISBN 978-0-7615-1389-6.
  55. ^ "Manual de referencia de MySQL 8.0". Corporación Oráculo . Consultado el 2 de enero de 2020 .
  56. ^ "SQL tal como lo entiende SQLite". Consorcio SQLite . Consultado el 2 de enero de 2020 .
  57. ^ "Documentación de PostgreSQL 10.11". El grupo de desarrollo global de PostgreSQL . Consultado el 2 de enero de 2020 .
  58. ^ "Referencia SQL de la base de datos Oracle®". Corporación Oráculo . Consultado el 2 de enero de 2020 .
  59. ^ Andress, Mandy (2003). Sobrevivir a la seguridad: cómo integrar personas, procesos y tecnología . Prensa CRC. ISBN 978-0-8493-2042-2.

Otras lecturas

enlaces externos