Bonjour à tous,
Je suis en train de bosser sur un projet assez large (pour une seule personne en tout cas) qui est la création d'un serveur avec Boost.Asio.
Mon problème est probablement redondant dans beaucoup d'autres projets alors j'aimerais en parler. Quand on est sur un projet assez large on arrive plus ou moins vite à utiliser certaines classes un peu partout, vous les connaissez bien il peut s'agir :
- Du module de log
- Du module de statistique
- De la connexion à la base de donnée
- De la configuration globale du serveur (chemin vers certains fichiers, ...)
- ...
Par exemple pour le logger, j'en ai fait un singleton. Par contre pour la configuration globale du serveur j'ai un objet que je passe partout...
De plus, on nous rabâche (dans les livres, les blogs, ...) de programmer en essayant de faire des modules les plus indépendants/ré-utilisables possibles. Mais pour moi, rien que d'ajouter des messages de logs, c'est déjà la mauvaise pente de la ré-utilisabilité...
De plus, j'en arriverais à avoir une classe de ce type :
Mais je déteste ce genre de classe qui sont à l'opposée d'un esprit de bonne conception...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 class environment { server_config cfg; database_connection db; statistic stat; // ... public: server_config& get_config(); database_connection get_db(); // ... };
Comment est-ce que vous vous en sortez ? Est-ce que vous êtes enclin à faire des singletons pour tout ce qui est global ?
Merci d'avance pour votre commentaire
PS : Ne dites pas pourquoi vous n'aimez pas les singletons, on le sait tous. Dites nous quelles sont vos solutions.
Partager