Nota: un argomento sul perché la documentazione deve essere pubblicata nel codice è stata creata nella sezione in fondo a questa risposta.
Ti incoraggio a includere i dettagli dell'algoritmo come commento e altro ancora.
Perché questo algoritmo?
Prima di spiegare l'algoritmo stesso, devi prima spiegare perché è stato scelto questo algoritmo, piuttosto che un'alternativa.
La spiegazione può essere semplice come "Useremo le curve di Bezier, non è stata esplorata nessuna altra alternativa dato che si sono comportati abbastanza bene". Tuttavia, se hai provato le alternative, spiega perché sono state respinte.
L'idea qui è che un maintainer che verrà in seguito potrebbe dover di nuovo esplorare (cercando prestazioni o accuratezza migliori ad esempio), e se hai già fatto il lavoro con l'algoritmo X e Y, e i motivi per cui sono stati rifiutati si applicano ancora , quindi il maintainer può decidere di iniziare a controllare un altro algoritmo invece di ripetere i tuoi esperimenti.
Quale algoritmo?
Perché questo potrebbe sembrare sciocco, visto che hai detto "Bezier Curves", ricorda che a volte ci sono lievi variazioni di algoritmi / strutture dati / ... (B-Tree, B + -Tree, B * -Tree per esempio). Pertanto, specificando con la massima precisione possibile quale algoritmo è stato selezionato e da quale fonte è stato estratto (preferibilmente uno disponibile online ...) può aiutare le aspettative dei lettori con la realtà.
Inoltre, se questa è una variante rispetto alla versione generale del libro di testo, assicurati che sia chiaramente etichettata come tale, per timore che i lettori si chiedano perché sembra deviare.
Come funziona questo algoritmo?
Questo dipende molto dalla squadra con cui lavori. Se le curve di Bezier sono il pane e il burro della squadra, allora una semplice fodera potrebbe essere sufficiente; tuttavia se il codice può essere letto / mantenuto da persone per le quali questo suona come una figura di surf, descrivere l'algoritmo suona meglio.
In secondo luogo, un altro vantaggio di descrivere l'algoritmo nei commenti è che rende facile dividere la descrizione, lo stile di programmazione alfabetico. Cioè, per prima cosa inizi con una struttura generale dell'algoritmo che identifica solo le sezioni, e quindi per ogni sezione avrai un blocco di commenti e immediatamente sotto il codice associato. Rende più facile verificare che il codice sia adeguato ai commenti.
Infine, un ultimo vantaggio nel descrivere l'algoritmo nei commenti è che rende possibile annotare l'algoritmo stesso. Puoi prendere scorciatoie (un singolo giro di approssimazione invece di due è sufficiente per le tue esigenze di precisione, ad esempio), o al contrario spiegare perché un dato passo è necessario (e quali sono le conseguenze della sua rimozione); potresti anche correggere l'algoritmo (se hai indicato una versione stampata, ad esempio, potrebbe esserci un errore ...).
Dove?
Poiché questo è un dettaglio di implementazione, non dovrebbe intralciare il chiamante. I dettagli di implementazione devono essere documentati in la funzione (non al di fuori) e, a seconda del generatore di documentazione, utilizzando i commenti "puri" in quanto non è necessario che vengano visualizzati nella documentazione.
Perché documentare in il codice?
Sosterrò che la documentazione del codice dovrebbe vivere il più vicino possibile al codice. Il motivo è semplice:
- il sistema di tracciamento dei bug potrebbe cambiare, e anche se lo strumento di importazione funziona, gli ID potrebbero cambiare
- il sistema di controllo del codice sorgente potrebbe cambiare
- il repository potrebbe essere riorganizzato, diviso in più, ecc ...
- ...
Ogni volta che si verifica un evento del genere, esiste il rischio che i collegamenti tra (nuovi) limiti vengano interrotti.
Il codice è l'unica costante !
In effetti:
- senza il codice, non hai bisogno della documentazione
- con il codice, ottieni i commenti e quindi la documentazione all'interno di
Quindi è più probabile che la documentazione sia disponibile se inclusa nel codice.
C'è un limite, ovviamente, per esempio i file di testo non possono contenere immagini, quindi è difficile includere nei commenti grafici / diagrammi (l'ASCII Art non deve essere sottovalutato, e sì, sono serio). Il testo fermo è molto lungo, quindi per lo meno puoi fornire una buona spiegazione e quindi nulla ti impedisce di fornire una spiegazione più approfondita altrove e di collegarti ad esso.