2009-08-03 12 views
6

¿Tiene un hábito de tal manera que cuando se está codificando , se escribe la documentación así, y asegúrese de que están en sincronía.Cómo escribir la documentación al programar

¿Cómo se puede lograr eso? ¿Qué escribes? La función es lógica? ¿El concepto? O otras mejores prácticas? Gracias en avance!

+0

Esto parece una especie de refrito de su pregunta anterior: http://stackoverflow.com/questions/1220319/how-to-design-software – Amber

+0

no es lo mismo. lo anterior es cómo diseñar como gerente. y esta pregunta que quiero saber para ser un programador, ¿qué debo marcar? Gracias – MemoryLeak

+0

Ah, ya veo. Debido a la fraseología de ambos, no fue tan claro para mí. Gracias por aclararlo. – Amber

Respuesta

5

Soy un programador python y escribo mucho doctests, que es un módulo python que le permite escribir pruebas como ejemplos del uso de funciones en la cadena de documentación de cada función. Echar un vistazo al ejemplo de here:

def factorial(n): 
    """Return the factorial of n, an exact integer >= 0. 

    If the result is small enough to fit in an int, return an int. 
    Else return a long. 

    >>> [factorial(n) for n in range(6)] 
    [1, 1, 2, 6, 24, 120] 
    """ 

Las dos últimas líneas son un ejemplo del uso de la función, y se puede ejecutar mediante el módulo doctest. De esta manera, usted logra eso:

  • pone un ejemplo de uso de la función, por lo que los usuarios sabrán cómo usarla;
  • si incluye la prueba en su banco de pruebas y ejecuta pruebas con frecuencia, se notará si el ejemplo se rompe por un cambio en el código
  • no toma demasiado tiempo escribir este tipo de ejemplos.

Normalmente comienzo con la creación de funciones y la redacción de los doctests, para tener una idea de cómo funcionará cada función y cuáles son las entradas/salidas esperadas; Gracias a este enfoque, siempre tengo al menos una breve documentación de cada función y módulo que escribo.

De vez en cuando, escribo un documento más extenso que explica cómo se pueden usar mis módulos (para mis colegas) y siempre uso la sintaxis doctest; sin embargo, siguiendo su pregunta, nunca hago más que esto, a veces puedo escribir un comentario en un blog sobre mi trabajo o en una biblioteca que escribí, pero no tengo tiempo para escribir documentación más larga.

+0

¡Bien, gracias por aceptar la respuesta! :) Estoy seguro de que existe algo así como "doctest" para muchos otros idiomas también. – dalloliogm

0

No, pero puede usar la sintaxis de comentario XML para ayudarlo a lograrlo. Le permitirá documentar sus clases, propiedades y llamadas de método al menos. Luego puede usar la automatización de compilación para construir un archivo CHM para usted. Investiga Sandcastle por esto.

De lo contrario, es útil una wiki que ayude a rastrear la colaboración de su equipo. Muy a menudo estas cosas se convierten en "grupos de información" donde las personas describen algo sobre el sistema. Estos pueden ser utilizados para construir documentación también.

Finalmente, pueden crearse notas de la versión si tiene integración con su tienda de rastreo. Por ejemplo, TFS le permitirá obtener todos los elementos de trabajo y conjuntos de cambios para cualquier compilación determinada, lo cual es bastante útil para compilar notas de la versión.

+0

XML es el lenguaje del diablo. Estoy tentado de menospreciar ... – hasen

7

Escribo la estructura de la documentación antes de comenzar y la cambio mientras estoy escribiendo. Yo uso Diseño por contrato como una estructura de qué escribir en la documentación:

http://en.wikipedia.org/wiki/Design_by_contract 
  • valores de entrada aceptable e inaceptable o tipos, y sus significados
  • valores de retorno o tipos, y sus significados
  • error y condiciones de excepción valores o tipos, que pueden ocurrir, y sus significados
  • efectos secundarios
  • condiciones previas, que subclases pueden debilitar (pero no fortalecer)
  • Postcondiciones, que subclases pueden fortalecer (pero no debilitar)
  • invariantes, que subclases pueden fortalecer (pero no debilitar)
  • (más raramente) garantiza un rendimiento, por ejemplo para el tiempo o espacio utilizado
+0

Realmente quiero llegar a este lugar y admirarte por hacer esto ya. –

1

Esos elementos deben estar preferiblemente en la especificación de diseño (dependiendo del dominio del problema). El resto me gusta escribir en el código con etiquetas específicas y luego crear la documentación automáticamente. Una herramienta excelente para esto es doxygen, pero hay muchos otros.

De esta manera, la documentación se realiza de forma casi automática ya que me gusta comentar mi código mientras trabajo en él.

0

Depende del contexto de la documentación. Si lo está documentando para otros desarrolladores, entonces tengo la opinión de que las pruebas de unidades decentes y la nomenclatura variable con comentarios, entonces el código se auto documentará.

En el contexto de API externas para que los clientes utilicen, normalmente tomo el enfoque de documentar el elemento cuando termino de escribir esa funcionalidad.

2
  1. código tomamos como autodocumentado como sea posible -
  2. Hacer dibujos simple y fácilmente electrónicamente
  3. documentos de agarre como sonido muerde no ensayos - dicha utilización de un interno blog/wiki etc para agarrar información con capturas de pantalla y pensamientos . Mapas mentales ayuda

Esto me ayuda a documentar a medida que avanzo.

en esencia, son herramientas simples para recopilar ideas y luego son fáciles de poner en documentos más grandes si es necesario. Usar buenas herramientas Uso livewriter, mediwiki, snagit, onenote y freemind.

Odio escribir documentos, por lo que recopilo ideas a medida que avanzo.

1

El código bien escrito y bien comentado no debería necesitar mucha documentación adicional del programador. En cuanto a los documentos del usuario final, escribo los archivos de ayuda para mis aplicaciones al mismo tiempo que implemento cada función, y los tutoriales cuando he realizado la mayor parte de la codificación. Sin embargo, he llegado a pensar que escribir los tutoriales anteriormente en el proceso sería una mejor idea.

Cuestiones relacionadas