On Wed, 5 Jan 2011 18:21:19 +0100, Carlos Catucci <carlos.catu...@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 _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python