[Python] __debug__ e EAFP

Giovanni Porcari giovanni.porcari a softwell.it
Gio 12 Maggio 2016 10:32:29 CEST


> Il giorno 11 mag 2016, alle ore 23:33, Roberto Polli <robipolli a gmail.com> ha scritto:
> 
> Il 11 maggio 2016 16:31, Pietro Battiston <ml a pietrobattiston.it> ha scritto:
>> ... condensare ...
>> 
>> if not civico.isdigit():
>>    raise ValueError("Il numero civico deve essere numerico")
>> 
>> in
>> 
>> assert(civico.isdigit()) "Il numero civico deve essere numerico"
>> 
> Uso assert se il controllo:
> 
>  - non deve influire sul flusso del programma;
>  - rappresenta condizioni inaspettate e quindi un bug del programma;
>  - come placeholder nelle fasi preliminari - chiarito meglio il
> flusso li sostituisco con eccezioni;
> 
> eg.


Io invece uso le assert per rendere più leggibili degli errori
che può commettere lo sviluppatore ma che non saranno mai in produzione.

Ad esempio, gestendo una tabella in genropy devo avere una risorsa di form
associata. Supponiamo che lo sviluppatore metta come nome della form 'Miabellaform'
e che poi nel codice chieda di caricare la risorsa 'Miabelaform'.
Potrei nel loader della risorsa mettere una try e sollevare un'eccezione
se la risorsa cercata non esiste. Ma onestamente un problema simile NON capita in produzione,
e quindi la try è inutile. Però se lo sviluppatore commette l'errore che dicevo prima,
si trova una pagina bianca e magari non capisce perchè. 
Quindi se nel loader posso mettere un assert che se non trova la risorsa mi dica che 
la risorsa 'Miabelaform' non esiste.

Questo tipo di uso è a mio avviso, perfetto per un'assert.

Ciao

G.



Maggiori informazioni sulla lista Python