[Python] Design By Contract in Python

Marco Ippolito ippolito.marco a gmail.com
Mar 9 Dic 2014 17:46:42 CET


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.

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.

Perchè in python dovrebbe essere un controsenso?
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?

Marco

Marco




Il 9 dicembre 2014 17:32, enrico franchi <enrico.franchi a gmail.com> ha scritto:
>
> 2014-12-09 11:42 GMT+00:00 Marco Ippolito <ippolito.marco a gmail.com>:
>>
>> Ciao a tutti,
>> mi sono letto con estremo interesse 3/4 del libro "The pragmatic
>> programmer, from Journeryman to Master", che mi aveva suggerito
>> Enrico, che ringrazio ancora.
>>
>> Tra i tanti spunti interessanti, mi sembra di capire che un approccio
>> che aiuta alla modularità, alla semplificazione ed alla felicità di
>> testing è il Design By Contract.
>
>
> Si, andava molto di moda alla fine degli anni '90.
> Nella pratica e' un approccio utilizzato diffusamente e rigorosamente solo
> in determinati contesti.
>
> Non vorrei esagerare dicendo che e' morto, ma in buona salute proprio non
> sta.
> Tipicamente alcune idee alla base sono buone e sono rimaste nella pratica,
> ma a livello molto informale.
>
> Supporto rigoroso da parte del linguaggio scarseggia... in Python e' quasi
> un controsenso (anche perche' va fatto tutto a runtime).
> In altri ambienti c'e' piu' o meno, si usa a tratti, intensivamente,
> dipende.
>
>
> --
> .
> ..: -enrico-
>
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>


Maggiori informazioni sulla lista Python