<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2014-11-29 11:15 GMT+00:00 Marco Ippolito <span dir="ltr"><<a href="mailto:ippolito.marco@gmail.com" target="_blank">ippolito.marco@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">ciao Marco,<br>
ti ringrazio per la risposta.<br>
<br>
Ammetto che faccio fatica a comprendere il caso concreto.<br>
Entrando nello specifico. Consigli di usare @staticmethod quando è<br>
<span class="">utile disaccoppiare il metodo dall'oggetto.<br></span></blockquote><div><br></div><div>Personalmente, suggerisco di guardare staticmethod con sospetto.</div><div>Ci sono casi in cui e' utile, indubbiamente. Il commento chiave e':</div><div><br></div><div>"""</div><div><span style="font-family:arial,sans-serif;font-size:13px">Avrei potuto utilizzare una normale funzione ma può essere utile avere</span><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">tutte le funzioni organizzate sotto lo stesso tetto, oppure può essere</span><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">necessario nel caso in cui l'oggetto implementi una specifica</span><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">interfaccia.</span><br style="font-family:arial,sans-serif;font-size:13px"></div><div><span style="font-family:arial,sans-serif;font-size:13px">""""</span></div><div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px">In particolare, spesso e volentieri volere a tutti i costi usare staticmethod per fare il mestiere di funzioni (sotto sotto quello sono, funzioni nel namespace di una classe) e' indice di qualcosa che non funziona.</span></div><div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px">Poi ci sono una serie di casi in cui la faccenda puo' anche avere senso (e.g., si sta implementando uno strategy pattern e si hanno parti della strategia che davvero non dipendono dalla definizione dell'istanza o della classe). </span></div><div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px">In generale, dal mio punto di vista, e' un potenziale smell che sa *molto* di Javista (ovvero, la maggior parte degli usi di staticmethod che vedo sono a sproposito, quelli "buoni" sono una minoranza).</span></div><div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px">A me verrebbe da dirti: capisci come funziona, archivia da qualche parte che esiste, cerca di non rivolgerti a lui. Ci potrebbero essere casi in cui devi farlo, e sperabilmente ti sara' chiaro allora. Sospetta quando succede, valuta le alternative, e se alla fine porta benefici vai senza paura: e' una feature del linguaggio e non ha nulla di male di per se. Solo attento a non usarla a sproposito.</span></div><div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><font face="arial, sans-serif">Se ad un certo punto ti accorgi che stai facendo classi che sono solo o principalmente raggruppamenti statici in un namespace di metodi correlati, metti conto che quello sarebbe il mestiere dei moduli.</font></div></div><br clear="all"><div><br></div>-- <br><div class="gmail_signature"> .<br>..: -enrico-</div>
</div></div>