C'è qualche punto in globali o singleton "malvagi"
-
28-10-2019 - |
Domanda
In precedenza ho utilizzato Singleton per le classi globali, se è assolutamente necessario, ad esempio registrazione, gestione degli errori.Ma ora sto usando i test di unità a cui non piacciono!
Vorrei porre una domanda di base sui globali.Qual è il punto in loro?Cosa c'è di sbagliato nel creare una nuova istanza di una classe quando ne hai bisogno?
Soluzione
È vero, a volte i single possono creare problemi, che non avrai senza di loro.
Cerco di darti un elenco delle mie opinioni su questo argomento:
-
Il più grave sarebbe che il tuo software ha dipendenze circolari. Se stai lavorando su un'architettura SOA può succedere abbastanza velocemente, se non stai attento.
-
Anche i singoli possono spesso portare a un accoppiamento molto stretto delle tue classi, il che ti rende davvero difficile lavorare come tester.
-
Se lavori su un grande progetto e il modo in cui un'altra classe può ottenere un'istanza delle tue modifiche Singleton, dovrai cambiare molto codice. Questo può accadere anche senza i singleton, ma ho la sensazione che accada più spesso con i singleton.
Ma a volte un singleton è una bella idea e dovresti mantenerla. Anche in AS3 è possibile utilizzare singleton con la famosa soluzione alternativa del costruttore di argomenti di classi private. Come euristico quando non usare i singleton, suggerirei di pensare se la classe ha bisogno di molti riferimenti ad altri singleton. E con un po 'di riflessione puoi anche rendere testabili i tuoi singleton.
Altri suggerimenti
dovresti leggere questo thread SO: Cosa c'è di così brutto in Singletons?
personalmente, sono tutto per i single per cose come la registrazione, gli stack di annullamento / ripristino, la localizzazione e le notifiche da un ramo dell'elenco di visualizzazione a un altro, quando il bubbling di eventi non è davvero un'opzione.
Sebbene non siano sempre ideali, i single hanno sicuramente il loro posto e possono rendere lo sviluppo molto più semplice, indipendentemente da ciò che potrebbero dire alcuni puristi.