En programación informática , el código fuente y las interfaces de usuario autodocumentados (o autodescriptivos ) siguen convenciones de nomenclatura y convenciones de programación estructurada que permiten el uso del sistema sin conocimientos específicos previos. [1] En desarrollo web , la autodocumentación se refiere a un sitio web que expone todo el proceso de su creación a través de documentación pública, y cuya documentación pública es parte del proceso de desarrollo. [ cita requerida ]
Los objetivos comúnmente establecidos para los sistemas de autodocumentación incluyen:
El código autodocumentado se escribe aparentemente con nombres legibles para humanos, que suelen consistir en una frase en un lenguaje humano que refleja el significado del símbolo, como article.numberOfWords o TryOpen . El código también debe tener una estructura clara y ordenada para que un lector humano pueda comprender fácilmente el algoritmo utilizado.
Hay ciertas consideraciones prácticas que influyen en si se pueden lograr los objetivos de un sistema de autodocumentación y en qué medida se pueden lograr.
A continuación se muestra un ejemplo muy simple de código autodocumentado, que utiliza convenciones de nomenclatura en lugar de comentarios explícitos para hacer que la lógica del código sea más obvia para los lectores humanos.
tamaño_t count_alphabetic_chars ( const char * texto ) { si ( texto == NULL ) devuelve 0 ; tamaño_t conteo = 0 ; mientras ( * texto != '\0' ) { si ( es_alfabético ( * texto )) contar ++ ; texto ++ ; } devolver recuento ; }
Jef Raskin criticó la creencia en el código "autodocumentado" al decir que el código no puede explicar la razón detrás de por qué se escribe el programa o por qué se implementa de tal manera. [3]
[…] casi cualquier valor numérico en el código fuente debería reemplazarse por un símbolo correspondiente. Esto mejoraría enormemente el aspecto autoexplicativo del código fuente y facilitaría significativamente el mantenimiento del código a largo plazo, ya que permitiría buscar símbolos para encontrar relaciones entre diferentes extractos del código. […]