[Python] inquisitori [was re: Turbopascal??]
Daniele Varrazzo
piro a develer.com
Mer 5 Gen 2011 18:32:55 CET
On Wed, 5 Jan 2011 18:21:19 +0100, Carlos Catucci
<carlos.catucci a gmail.com> wrote:
>> Il GOTO in C io lo ho sempre considerato una bestemmia.
>
>>
>> Si vede che non hai mai gestito gli errori. :)
>>
>> Riscrivi una funzione come questa <http://tinyurl.com/2esxn2q> senza
>> usare
>> goto e valuta se il risultato č migliore. Codice limitato a 80 colonne,
>> prego.
> 554 if (!(egtrid = PyObject_CallFunction(group,"i",2)))
> 555 {
> 556 fn_exit( rv, egtrid, ebqual, gtrid, egtrid, format_id, item,
> group, m );
> 557 }
> 558 if (!(gtrid = _xid_decode64(egtrid)))
> 559 {
> 560 fn_exit( rv, egtrid, ebqual, gtrid, egtrid, format_id, item,
> group, m );
> 561 }
> 562 if (!(ebqual = PyObject_CallFunction(group, "i", 3)))
> 563 {
> 564 fn_exit( rv, egtrid, ebqual, gtrid, egtrid, format_id, item,
> group, m );
> 565 }
> 566 if (!(bqual = _xid_decode64(ebqual)))
> 567 {
> 568 fn_exit( rv, egtrid, ebqual, gtrid, egtrid, format_id, item,
> group, m );
> 569 }
> 570 /* Try to build the xid with the parsed material */
> 571 rv = (XidObject *)PyObject_CallFunctionObjArgs((PyObject
*)&XidType,
> 572 format_id, gtrid, bqual, NULL);
>
> ... PyObject fn_exit( rv, egtrid, ebqual, gtrid, egtrid, format_id,
item,
> group, m )
> ... {
> ... Py_XDECREF(bqual);
> Py_XDECREF(ebqual);
> Py_XDECREF(gtrid);
> Py_XDECREF(egtrid);
> Py_XDECREF(format_id);
> Py_XDECREF(item);
> Py_XDECREF(group);
> Py_XDECREF(m);
> return rv;
> ... }
Cioč, per ogni funzione scrivi una funzione aggiuntiva, questa in
particolare ha 9 parametri, il refactoring della funzione originale implica
ridefinire quella funzione e modificare tutti i punti in cui viene
chiamata... e tutto questo per rispettare la propria convinzione che goto
non serva in nessun caso?
I dogma sono una brutta bestia. :)
> Non e' piu' pulito cosi?
Fammici pensare... no. Opinioni :)
--
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com
Maggiori informazioni sulla lista
Python