Pendant que nous programmons, nous développons tous des pratiques et des modèles que nous utilisons et sur lesquels nous nous appuyons. Cependant, au fil du temps, au fur et à mesure que notre compréhension, notre maturité et même notre utilisation de la technologie changent, nous nous rendons compte que certaines pratiques que nous pensions autrefois excellentes ne le sont pas (ou ne s'appliquent plus).
Un exemple d'une pratique que j'ai utilisée assez souvent, mais que j'ai changé ces dernières années, est l'utilisation du modèle d'objet Singleton .
Grâce à ma propre expérience et à de longs débats avec des collègues, je me suis rendu compte que les singletons ne sont pas toujours souhaitables - ils peuvent rendre les tests plus difficiles (en inhibant des techniques comme la moquerie) et peuvent créer un couplage indésirable entre les parties d'un système. Au lieu de cela, j'utilise maintenant des fabriques d'objets (généralement avec un conteneur IoC) qui cachent la nature et l'existence des singletons aux parties du système qui ne se soucient pas - ou ont besoin de savoir. Au lieu de cela, ils s'appuient sur une fabrique (ou un localisateur de services) pour accéder à ces objets.
Mes questions à la communauté, dans un esprit de développement personnel, sont:
- Quels modèles ou pratiques de programmation avez-vous reconsidérés récemment et essayez maintenant d'éviter?
- Par quoi avez-vous décidé de les remplacer?