<br><br><div class="gmail_quote">On Jan 30, 2008 3:01 PM, Java <<a href="mailto:quilospam@email.it">quilospam@email.it</a>> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d"><br>> Come risolve lo stesso problema Python? Il tipo è ininfluente, fare<br>> funzioni che accettano un numero variabile di argomenti è banale,<br>> comodo da gestire e piuttosto gradevole da leggere (again, named<br>
> parameters).<br>><br>><br></div>Ora non esageriamo, non è che tutto ciò che fa python è bello e<br>fantastico e ciò che fanno altri linguaggi fa schifo.<br><br>L'overloading è molto comodo proprio per migliorare la leggibilità del<br>
codice.<br><br>supponi di avere 10 metodi overloadati (ARGH!). E supponi che ognuno sia<br>di 100 righe di codice.<br>Secondo te è meglio avere un unico metodo con tutti gli if chee in base<br>alla combinazione di valori passati per parametro esegue uno o l'altro<br>
ramo dell'if-then-else?<br><br></blockquote></div><br><br>Se un metodo diventa tanto lungo, ci vuole un buon motivo...<br>se 10 metodi diventano tanto lunghi....<br>probabilmente è il momento di rifattorizzare.<br>E forse non c'è bisogno di fare tutti questi if.<br>
La scelta idiomatica di python è, anziché usare<br>if caso1:<br> fn1()<br>elif caso2:<br> fn2()<br>elif caso3:<br> fn3()<br><br>ma è di mettere in un dizionario:<br>funzione = {"caso1":fn1, "caso2":fn2, "caso3":fn3}<br>
poi hai la tua variabile mio_caso (che puo' valere caso1, caso2, quello che ti pare)<br>e poi chiami <br>funzione[mio_caso]() <br><br>ciao<br>fra<br>