Mentre programmiamo, sviluppiamo tutti pratiche e modelli che utilizziamo e su cui facciamo affidamento. Tuttavia, nel tempo, man mano che la nostra comprensione, maturità e persino l'utilizzo della tecnologia cambiano, ci rendiamo conto che alcune pratiche che una volta pensavamo fossero ottime non sono (o non sono più applicabili).
Un esempio di una pratica che ho usato una volta abbastanza spesso, ma che negli ultimi anni è cambiata, è l'uso del modello di oggetti Singleton .
Grazie alla mia esperienza e ai lunghi dibattiti con i colleghi, sono arrivato a rendermi conto che i singleton non sono sempre desiderabili : possono rendere i test più difficili (inibendo tecniche come il beffardo) e possono creare accoppiamenti indesiderabili tra le parti di un sistema. Invece, ora uso fabbriche di oggetti (in genere con un contenitore IoC) che nascondono la natura e l'esistenza dei singleton da parti del sistema che non si preoccupano o hanno bisogno di sapere. Invece, si basano su una fabbrica (o un localizzatore di servizi) per acquisire l'accesso a tali oggetti.
Le mie domande alla comunità, nello spirito di auto-miglioramento, sono:
- Quali schemi o pratiche di programmazione hai riconsiderato di recente e ora cerchi di evitare?
- Con cosa hai deciso di sostituirli?