Documentazione di basi di codice legacy
Consiglio vivamente di seguire la regola dello scout di scouting con basi di codice legacy. Cercare di documentare un progetto legacy indipendentemente dal lavorare su di esso non accadrà mai.
Documentazione nel codice
La cosa più importante è utilizzare le strutture di documentazione nell'ambiente di sviluppo scelto, quindi ciò significa pydoc per python, javadoc nei commenti java o xml in C #. Ciò semplifica la scrittura della documentazione contemporaneamente alla scrittura del codice.
Se fai affidamento sul tornare e documentare le cose in un secondo momento, potresti non aggirarlo, ma se lo fai mentre stai scrivendo il codice, ciò che deve essere documentato sarà fresco nella tua mente. C # ha anche la possibilità di emettere un avviso di compilazione se la documentazione XML è incompleta o incompatibile con il codice effettivo.
Test come documentazione
Un altro aspetto importante è avere una buona integrazione e unit test.
Spesso la documentazione si concentra su ciò che le classi e i metodi fanno isolatamente, saltando su come vengono utilizzati insieme per risolvere il problema. I test spesso li inseriscono nel contesto mostrando come interagiscono tra loro.
Allo stesso modo, i test unitari spesso evidenziano esplicitamente dipendenze esterne attraverso le quali le cose devono essere simulate .
Trovo anche che usando lo sviluppo Test-driven scrivo software che è più facile da usare, perché lo sto usando fin dall'inizio. Con un buon framework di test, rendere il codice più facile da testare e renderlo facile da usare sono spesso la stessa cosa.
Documentazione di livello superiore
Infine c'è cosa fare a livello di sistema e documentazione architetturale. Molti raccomanderebbero di scrivere tale documentazione in un wiki o di utilizzare Word o altri elaboratori di testi, ma per me il posto migliore per tale documentazione è anche accanto al codice, in un formato di testo semplice che è compatibile con il controllo della versione.
Proprio come con la documentazione in-code, se memorizzi la tua documentazione di livello superiore nel tuo repository di codice, è più probabile che tu la tenga aggiornata. Inoltre, si ottiene il vantaggio che quando si estrae la versione XY del codice, si ottiene anche la versione XY della documentazione. Inoltre, se si utilizza un formato compatibile con VCS, significa che è facile ramificare, diffondere e unire, proprio come il codice.
Per prima cosa mi piace , poiché è facile produrre sia pagine html che documenti pdf da esso, ed è molto più amichevole di LaTeX , ma può ancora includere espressioni matematiche LaTeX quando ne hai bisogno.