>> Non abbiamo bisogno del singleton, ne del borg. Li abbiamo gia'. > > Non che mi sia mai servito ma perché dovremmo evitare Borg? > > <http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/66531>
Un esempio è questo: questo bug è nato dall'uso del borg. http://sourceforge.net/tracker/index.php?func=detail&aid=1678046&group_id=32455&atid=405618 Ogni tanto (in maniera replicabile ma fortemente dipendente dalle condizioni iniziali: un mandelbug), generando le API di Twisted con Epydoc, tutti i valori None (es. i default delle funzioni) diventavano la stringa 'gtk'. Usare i borg è un enorme passo indietro sul piano della prevedibilità del codice: cambi lo stato dell'istanza 'a' e si altera quello dell'istanza 'b' anche se 'a is not b'. ('a' e 'b' sono in effetti diventati dei proxi verso uno stato condiviso). Crollano tutte le certezze degli uomini di fede... Ci si potrebbe limitare a usarlo "con educazione", ma quello che si può ottenere usando un borg lo si può ottenere anche usando factory methods, istanze interne, moduli, classi statiche, metaclassi e quant'altro per avere un oggetto che sia (o, a scelta, si comporti come) un'istanza unica per tutta la durata in vita di dell'applicazione, ma senza violare la "least surprise rule". -- Daniele Varrazzo - Develer S.r.l. http://www.develer.com
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python