[Python] Agile programming Robert Martin
Marco Buttu
marco.buttu a gmail.com
Mer 1 Ott 2014 11:53:10 CEST
On 30/09/2014 12:06, Carlos Catucci wrote:
> 2014-09-30 11:38 GMT+02:00 Manlio Perillo <manlio.perillo a gmail.com
> <mailto:manlio.perillo a gmail.com>>:
>
> Senza passare tra due estremi opposti, i commenti servono se fanno
> il loro dovere, ossia commentare del codice che altrimenti
> potrebbe non essere di immediata comprensione. Per fare questo
> devono essere scritti bene e tenuti aggiornati.
>
>
> Il commento tra tripli apici subito dopo la dichiarazione di classe o
> metodo in python che poi diviene l'output del comando help(<nome>) e'
> secondo il mio modesto parere una delle cose piu' intelligenti che
> esistano. Certo vanno scritti bene, e aggiornati.
In realta' il "commento tra tripli apici" non è un commento, ma una
stringa che viene utilizzata per creare della documentazione. Mentre i
commenti, come dice Manlio, servono per commentare il codice che
altrimenti potrebbe non essere di immediata comprensione (per lo
sviluppatore che deve mettere mano a quel codice), le docstring servono
per documentare le API, per cui sono utili all'utente finale per capire
come utilizzare un modulo, una funzione, una classe, ecc.
Per essere concreti, ecco un esempio che ritengo significativo, dove
risulta evidente quanto siano utili sia i commenti sia le docstring, se
scritti avendo chiaro in mente il loro scopo:
https://hg.python.org/cpython/file/3.4/Lib/statistics.py
Se vogliamo sapere cosa fa statistics e come utilizzare le sue funzioni,
non ci occorre consultare della documentazione offline o peggio andare a
tentativi:
>>> import statistics # A partire da Python 3.4
>>> help(statistics)
>>> help(statistics.mean)
Per quanto riguarda l'aggiornamento della documentazione, anche su
questo punto statistics e' scritto in modo impeccabile, perche' riporta
degli eloquenti esempi interattivi. Come disse Tim Peters a suo tempo:
* gli esempi non hanno prezzo
* gli esempi che non funzionano sono peggio di quelli inutili
* gli esempi che funzionano alla fine diventano esempi che non funzionano...
Il modulo doctest consente di evitare che "gli esempi che funzionano"
diventino "esempi che non funzionano":
$ python -m doctest /usr/lib/python3.4/statistics.py -v
Trying:
mean([-1.0, 2.5, 3.25, 5.75])
Expecting:
2.625
ok
...
52 tests in 18 items.
52 passed and 0 failed.
Test passed.
Visto che ci siamo, riporto un'altra perla, che e' la PEP relativa a
questo modulo:
http://legacy.python.org/dev/peps/pep-0450/
--
Marco Buttu
INAF-Osservatorio Astronomico di Cagliari
Via della Scienza n. 5, 09047 Selargius (CA)
Phone: 070 711 80 217
Email: mbuttu a oa-cagliari.inaf.it
Maggiori informazioni sulla lista
Python