[Python] Why Go is not good
Manlio Perillo
manlio.perillo a gmail.com
Ven 17 Lug 2015 14:28:20 CEST
2015-07-17 0:53 GMT+02:00 Enrico Bianchi <enrico.bianchi a ymail.com>:
> On 07/13/2015 11:55 AM, enrico franchi wrote:
>
>> > [...]
>
> a = may_return_null(...)
>> if a is not None:
>> f(a, ...)
>>
> Bruttino, non tanto perche` non mi piace, ma per com'e` scritto :)
> La sintassi
> if a:
> f(a,...)
>
> E` molto piu` elegante (si, e` una pulce che non serve a molto) :)
Io ti consiglio di lasciare `a is not None`.
`if a` può significare troppe cose, specialmente in Python, e rischi di
ritrovarti con un comportamento inaspettato.
In Go per evitare problemi del genere hanno deciso che l'istruzione `if`
accetta solo espressioni booleane.
>
> Fanno sempre e solo stack unwind, non danno controllo al programmatore.
>>
> Mmm... continuo a non capire... Un esempio (o della documentazione)?
>
> Come dicevo... quello non e' Go idiomatico a mio avviso.
>>
> Anche qua, mi sembra che tu abbia dato piu` peso al codice che ho usato
> come esempio piuttosto che al concetto che volevo esprimere. Personalmente
> ritengo che un try/except sia piu` elegante rispetto al dover fare il check
> per ogni error che ti viene restituito.
http://blog.golang.org/errors-are-values
> Quello che intendo e` che, ad esempio, le operazioni di apertura,
> scrittura e chiusura di un file in Go devono essere gestite una per una,
> mentre in Python le posso gestire tutte nello stesso try/except che,
> personalmente, ritengo piu` sensato
>
>
Fino a quando non devi gestire l'errore.
A molti le eccezioni piacciono perchè ti fanno "dimenticare" che c'è stato
un errore.
Il codice è "bello", ma quando devi gestire gli errori poi le cose iniziano
ad andare in modo diverso.
E la gente inizia a fare:
except Exception:
# print traceback
se non di peggio.
Ciao Manlio
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20150717/88dade83/attachment.html>
Maggiori informazioni sulla lista
Python