Voici la situation: j'ai une classe qui en fait trop. C'est principalement pour accéder aux informations de configuration, mais il y a aussi la connexion à la base de données. Il est implémenté en tant que singleton, ce qui rend les tests unitaires difficiles, car la plupart du code y est étroitement lié. Ceci est d'autant plus problématique qu'il crée une dépendance à l'import (ce que nous faisons en Python), ce qui signifie que certains modules doivent être importés dans un certain ordre. Idéalement, j'aimerais diviser cela en deux classes et en faire un non-singleton. Heureusement, mon employeur s'est félicité du fait que ce genre de test soit bon et qu'il me permette de faire des changements comme celui-ci s'il rend le code plus testable. Cependant, je doute qu'ils seront prêts à me permettre de passer trop temps là-dessus. Et je préfère régler cela progressivement plutôt que d'essayer d'être trop radical.Quel est le plus mauvais: un singleton inutile ou un objet de Dieu?
Alors, je vois trois choix ici:
- Pause l'objet de configuration dans un objet de configuration (singleton) et un objet de base de données (non-singleton). Cela me permettrait au moins de supprimer la base de données en tant que dépendance à l'importation.
- Rendez l'objet de configuration non-singleton et transmettez-le aux objets qui en ont besoin. Je pense que cela répond mieux à nos besoins à court terme, mais je pense que cela prendrait beaucoup plus de temps.
- Faites quelque chose que je n'avais pas pensé que vous suggérez dans votre réponse. :-)
Alors qu'est-ce que je fais?
Je suppose que * est * quelque chose à laquelle je n'avais pas pensé. En brisant l'objet, il devient plus facile de le dé-singleton (si c'est un mot). –
Que diriez-vous de desingulate? –
ou peut-être pluriel? :-) –