Quali sono le tue preferenze per referenziare la documentazione ufficiale (come un white paper) per un algoritmo dai commenti in
il codice che lo implementa? Sto cercando di decidere tra due metodi, come illustrato dagli esempi di seguito, ma sono
aperto ad altri suggerimenti. RFC 1321 , ad esempio, descrive l'algoritmo di hash MD5. Se stavo implementando MD5
in Python usando la carta come guida e documentato il mio codice mentre procedevo, quale delle seguenti implementazioni di a
la funzione di esempio pad_string(str)
ti consiglierebbe, se non qualcosa di completamente diverso?
opzione 1
def pad_string(str):
"""
Pads the string to be hashed to an appropriate length. See RFC 1321 3.1.
"""
dove la sezione pertinente della RFC è:
3.1 Step 1. Append Padding Bits
The message is "padded" (extended) so that its length (in bits) is
congruent to 448, modulo 512. That is, the message is extended so
that it is just 64 bits shy of being a multiple of 512 bits long.
Padding is always performed, even if the length of the message is
already congruent to 448, modulo 512.
o
opzione 2
def pad_string(str):
"""
Pads the argument string such that its length is congruent to 448, modulo 512.
"""
Qui, l'opzione 1 fa semplicemente riferimento a parti rilevanti della documentazione MD5 "ufficiale" per numero di sezione, dove L'opzione 2 non fa alcuna menzione del documento e, sostanzialmente, ne reiterà il contenuto laddove necessario. Il Il vantaggio del primo è che la documentazione aderisce in qualche modo a DRY (non ripetere te stesso, in questo caso con rispetto al RFC), ma il suo svantaggio è che si basa su una risorsa di terze parti: se è un oscuro tecnico specifica ospitata in un posto e il link fornito all'interno della documentazione del codice muore, quindi sei fuori di fortuna. Il vantaggio del secondo approccio è che la tua fonte è autonoma: non hai bisogno di altre informazioni quando leggendolo, e il nostro esempio di script MD5 diventerebbe tanto una descrizione dell'algoritmo quanto suo implementazione; questo, ovviamente, richiede più scrittura sul codice dell'autore, può ingigantire la documentazione, e altro ancora importante, potrebbe finire con informazioni copiate male e altri errori. C'è un consenso su quale sia il migliore?