Comentarios de documentación en Java: Dominando Javadoc y tipos de comentarios
El lenguaje Java soporta tres tipos de comentarios:
| Nº | Comentario y Descripción |
|---|---|
| 1 | /* texto */ El compilador ignora todo desde /* hasta */. |
| 2 | //texto El compilador ignora todo desde // hasta el final de la línea. |
| 3 | /** documentación */ Este es un comentario de documentación, generalmente llamado doc comment. La herramienta JDK javadoc usa doc comments al generar documentación automáticamente. |
Este capítulo explica Javadoc y cómo usarlo para generar documentación útil para código Java.
¿Qué es Javadoc?
Javadoc es una herramienta que viene con el JDK y se usa para generar documentación de código Java en formato HTML a partir del código fuente, que requiere documentación en un formato predefinido.
Ejemplo simple donde las líneas dentro de /*….*/ son comentarios multilínea de Java. La línea precedida por // es comentario de una línea.
Ejemplo
/**
* El programa HelloWorld implementa una aplicación que
* simplemente muestra "¡Hola Mundo!" en la salida estándar.
*
* @author Zara Ali
* @version 1.0
* @since 2014-03-31
*/
public class HelloWorld {
public static void main(String[] args) {
// Imprime ¡Hola, Mundo! en la salida estándar.
System.out.println("¡Hola Mundo!");
}
}
Puedes incluir etiquetas HTML requeridas dentro de la descripción. Por ejemplo, <h1>....</h1> para encabezado y <p> para salto de párrafo:
Ejemplo
/**
* <h1>¡Hola, Mundo!</h1>
* El programa HelloWorld implementa una aplicación que
* simplemente muestra "¡Hola Mundo!" en la salida estándar.
* <p>
* Dar comentarios adecuados en tu programa lo hace más
* amigable y se asume como código de alta calidad.
*
* @author Zara Ali
* @version 1.0
* @since 2014-03-31
*/
public class HelloWorld {
public static void main(String[] args) {
System.out.println("¡Hola Mundo!");
}
}
Etiquetas de Javadoc
La herramienta javadoc reconoce las siguientes etiquetas:
| Etiqueta | Descripción | Sintaxis |
|---|---|---|
| @author | Añade el autor de una clase. | @author nombre-texto |
| {@code} | Muestra texto en fuente de código sin interpretarlo como HTML ni etiquetas javadoc anidadas. | {@code texto} |
| {@docRoot} | Representa la ruta relativa al directorio raíz del documento generado desde cualquier página generada. | {@docRoot} |
| @deprecated | Añade comentario indicando que esta API ya no debería usarse. | @deprecated texto-obsoleto |
| @exception | Añade subencabezado Throws a la documentación generada, con nombre de clase y descripción. | @exception nombre-clase descripción |
| {@inheritDoc} | Hereda comentario de la más cercana clase heredable o interfaz implementable. | Hereda comentario de la superclase inmediata. |
| {@link} | Inserta enlace en línea con etiqueta de texto visible que apunta a la documentación del paquete, clase o miembro especificado. | {@link paquete.clase#miembro etiqueta} |
| {@linkplain} | Idéntico a {@link}, pero la etiqueta del enlace se muestra en texto plano en lugar de fuente de código. | {@linkplain paquete.clase#miembro etiqueta} |
| @param | Añade parámetro con nombre y descripción a la sección "Parámetros". | @param nombre-parámetro descripción |
| @return | Añade sección "Returns" con texto de descripción. | @return descripción |
| @see | Añade encabezado "See Also" con enlace o entrada de texto que apunta a referencia. | @see referencia |
| @serial | Usado en comentario doc para campo serializable por defecto. | @serial descripción-campo | include | exclude |
| @serialData | Documenta datos escritos por writeObject() o writeExternal(). | @serialData descripción-datos |
| @serialField | Documenta componente ObjectStreamField. | @serialField nombre-campo tipo-campo descripción-campo |
| @since | Añade encabezado "Since" con texto since-text especificado. | @since versión |
| @throws | @throws y @exception son sinónimos. | @throws nombre-clase descripción |
| {@value} | Cuando {@value} se usa en comentario doc de campo estático, muestra el valor de esa constante. | {@value paquete.clase#campo} |
| @version | Añade subencabezado "Version" con version-text especificado cuando se usa opción -version. | @version version-text |
Ejemplo
El siguiente programa usa algunas etiquetas importantes. Puedes usar otras según tus necesidades.
La documentación sobre la clase AddNum se producirá en HTML AddNum.html y también se creará un archivo maestro index.html.
import java.io.*;
/**
* <h1>¡Sumar Dos Números!</h1>
* El programa AddNum implementa una aplicación que
* simplemente suma dos números enteros dados e imprime
* el resultado en pantalla.
* <p>
* <b>Nota:</b> Dar comentarios adecuados en tu programa lo hace más
* amigable y se asume como código de alta calidad.
*
* @author Zara Ali
* @version 1.0
* @since 2014-03-31
*/
public class AddNum {
/**
* Este método suma dos enteros. Es la forma más simple
* de un método de clase, solo para mostrar el uso de
* varias etiquetas javadoc.
* @param numA Primer parámetro para addNum
* @param numB Segundo parámetro para addNum
* @return int Retorna la suma de numA y numB.
*/
public int addNum(int numA, int numB) {
return numA + numB;
}
/**
* Método principal que usa addNum.
* @param args No usado.
* @return Nada.
* @exception IOException En error de entrada.
* @see IOException
*/
public static void main(String args[]) throws IOException {
AddNum obj = new AddNum();
int sum = obj.addNum(10, 20);
System.out.println("Suma de 10 y 20 es: " + sum);
}
}
Procesa el archivo AddNum.java con javadoc:
$ javadoc AddNum.java Loading source file AddNum.java... Constructing Javadoc information... Standard Doclet version 1.7.0_51 Building tree for all the packages and classes... Generating /AddNum.html... AddNum.java:36: warning - @return tag cannot be used in method with void return type. Generating /package-frame.html... Generating /package-summary.html... Generating /package-tree.html... Generating /constant-values.html... Building index for all the packages and classes... Generating /overview-tree.html... Generating /index-all.html... Generating /deprecated-list.html... Building index for all classes... Generating /allclasses-frame.html... Generating /allclasses-noframe.html... Generating /index.html... Generating /help-doc.html... 1 warning
Puedes ver la documentación generada en AddNum. Si usas JDK 1.7, javadoc no genera un gran stylesheet.css; sugerimos descargar y usar el estándar desde https://docs.oracle.com/javase/7/docs/api/stylesheet.css
Java
- Dominar Operadores en Java: Tipos, Sintaxis y Ejemplos Prácticos
- Comentarios en Java: Tipos, Uso y Mejores Prácticas
- Dominar el Bucle for Mejorado en Java: Sintaxis, Ejemplos y Mejores Prácticas
- Dominar Strings en Java: Creación, Métodos y Mejores Prácticas
- Dominando interfaces en Java: Conceptos, implementación y mejores prácticas
- Dominando las clases internas anónimas en Java: Definición, sintaxis y ejemplos prácticos
- Dominando Try‑with‑Resources en Java: Gestión automática de recursos explicada
- Anotaciones en Java explicadas: Tipos, ubicación y ejemplos prácticos
- Aserciones en Java: Guía práctica para detectar bugs y asegurar fiabilidad del código
- Entendiendo Java Vector: Uso, Características y Comparación con ArrayList
- Comentarios de documentación en Java: Dominando Javadoc y tipos de comentarios