I have document THAT?

The package description

Es el lugar en el cual se explica como empezar y en que hace el paquete (package), cuales son las abstracciones clave y cómo explorarlo.

Bad documentation == bad code

La documentación forma parte del código, por lo tanto, un buen código con una mala documentación se puede considerar cómo un mal código ya que no es reutilizable (solo lo entiende aquel que escribió el código)

Return codes

Descripción de los valores de retorno, ésta debe contener una descripción detallada del rango de los valores que van a ser retornados.

Preconditions, postconditions, and invariants

Una precondición es una restricción sobre el estado del objeto antes de que se llame el método.

Una postcondición, es una restricción en el estado del objeto después de que se haya completado la llamada de un método.

Una invariante es una restricción sobre el estado del objeto que garantiza que sea verdad en todo momento

Method linkage

Significa que dos métodos en una clase dependen uno del otro y hacen suposiciones de la conducta del otro.

The Class Documentation

Incluye una descripción de lo que hace en particular la clase (class) pero también describe como esa clase se relaciona con otras clases que están en el paquete.

So what constitutes good documentation?

Una buena documentación tiene cómo base, las descripciones de las clases junto que con sus relaciones entre sí, la descripción del paquete (qué hace) y todo esto acompañado con ejemplos de entrada y salida.

Exceptions

En este se especifican las excepciones o valores que pueden generar errores.

Side effects

Los efectos secundarios son la modificación del estado de los objetos relacionados.