On 30/09/2014 12:06, Carlos Catucci wrote:
2014-09-30 11:38 GMT+02:00 Manlio Perillo <manlio.peri...@gmail.com <mailto:manlio.peri...@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: mbu...@oa-cagliari.inaf.it

_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a