[Python] Design By Contract in Python

Marco Ippolito ippolito.marco a gmail.com
Mar 9 Dic 2014 18:45:02 CET


Ti ringrazio Enrico

Marco

Il 9 dicembre 2014 18:37, enrico franchi <enrico.franchi a gmail.com> ha scritto:
>
>
> 2014-12-09 16:46 GMT+00:00 Marco Ippolito <ippolito.marco a gmail.com>:
>>
>> Ciao Enrico,
>> ammetto la mia ignoranza.
>> non capisco perchè in python dovrebbe essere un controsenso.
>>
>
>>
>> Se ho capito bene il senso (scusate il gioco di parole) del design by
>> contract, l'obiettivo è quello di "dichiarare" in qualche modo
>> all'inizio cosa deve produrre un certo pezzo di codice, quali input
>> sono accettabili per esso, e le condizioni che devono rimanere vere
>> per il chiamante.
>
>
> Non e' solo *dichiararlo*. E' *definirlo*, ma soprattutto *verificarlo*.
>
>>
>> Come dici tu queste idee di fondo mi sembrano essere buone, nel senso
>> che aiutano a pensare il codice in termini di "service" fornito
>> reciprocamente dai vari componenti, e questo rende il tutto più
>> facilmente testabile.
>
>
> Non e' solo questione di essere *testabile*. Essenzialmente si tratta di
> roba che e' formalmente dimostrabilmente corretta e che, di conseguenza, non
> necessariamente dovrebbe avere bisogno di "test" in senso stretto, perche'
> l'ambiente dovrebbe fare i test in modo automatico. Di fatto, un buon numero
> di test dovrebbero diventare ridondanti. E tipicamente vuoi che sia fatto
> *staticamente*.
>
>
>>
>>
>> Perchè in python dovrebbe essere un controsenso?
>
>
> Perche' e' un linguaggio completamente dinamico che vive praticamente
> interamente a runtime.
> L'unico punto in cui e' veramente possibile fare le verifiche e' a runtime.
> E in generale si tratta di roba relativamente costosa da verificare (perche'
> vuoi che i contratti siano sensati, non limitarti a quelli facili da
> testare).
>
>>
>> Quello che alla fine vorrei utilizzare in modo pratico e concreto è
>> delle modalità meglio se codificate e già in uso, che mi aiutino a
>> pensare in anticipo a modi "intelligenti" di scrivere il codice.  Non
>> potrebbe servire l'approccio Design by Contract?
>
>
> Boh. "Potrebbe" servire, certo. Metti conto che la metodologia come definita
> da manuale non mi risulta usata praticamente da nessuno. Per me e' una di
> quelle cose che a volte torna comoda come strumento concettuale, ma poi la
> cosa finisce li.
>
> In generale fa bene sapere che c'e', fa bene sapere come funziona. Fa anche
> bene saperci ragionare. Ma poi, per me, finisce li. YMMV.
>
>
> --
> .
> ..: -enrico-
>
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>


Maggiori informazioni sulla lista Python