Sono nuovo per i programmatori e sto cercando di aumentare la mia conoscenza della programmazione. Recentemente, un utente su Stack Overflow mi ha detto che usare i singleton è una cattiva idea, che incoraggiano l'accoppiamento stretto e che rendono i test più difficili.
Ciò che ha spinto questa discussione è stato che ogni classe che abbia mai scritto ha avuto accesso a qualsiasi tipo di dati attraverso un singleton. Ad esempio, una classe che gestisce i dati di stato per un gioco. Se qualsiasi altra classe volesse accedere a questi dati, tutto ciò che dovrebbero fare è ottenere l'istanza dei singleton e lì sarebbe. In particolare, creare un'istanza di una classe su AppDelegate, quindi accedervi tramite: [[[[UIApplication sharedApplication] delegate] gameObject] getScore].
L'utente SO mi ha detto che dovrei creare un'istanza del 'gameObject' ovunque sia necessario, quindi passare quell'oggetto ad ogni altra classe che ne ha bisogno tramite un metodo come argomento o tramite una proprietà.
Stavo discutendo di questi punti quando qualcun altro ha sottolineato che questa informazione è completamente sbagliata, che i singleton non sono correlati all'accoppiamento e che non influenzano affatto il test.
Ora sono completamente confuso su quale persona sia corretta. Qualcuno potrebbe per favore chiarire quale tecnica è la migliore per un oggetto a persistere per tutta la durata dell'app, ed essere accessibile ad altre classi, e anche mantenere un accoppiamento lento. Per me, l'oggetto che passa per metodo o proprietà per ogni classe sembra il più logico, ma non lo so!
Grazie in anticipo per qualsiasi aiuto!