mercredi 1 octobre 2008

Comment découper son code

Codons! Mais comment diviser son code en bibliothèques? À plus forte raison s'il y a plusieurs applications partageant le code (client serveur, par exemple)?

J'ai tout essayé. Du monolithique à la myriade de bibliothèques hyper-spécialisées. Et j'ai atteint un équilibre qui pour l'instant ne fonctionne pas trop mal.



Game contient le plus de code possible, à l'exception:
- Du code de GUI, qui va dans Client
- Du code réseau et connexion à la base de données, qui va dans Serveur
- Du code suffisamment générique pour ne pas être spécifique à l'application que je développe, qui va dans Common

Je m'interdis d'ailleurs d'inclure les en-têtes de connexion à la BDD, du réseau, et de la GUI, afin de forcer cette distinction.

Ainsi, j'ai par exemple tous mes objets du jeu dans Game, mais chaque objet a des méthodes virtuelles pures pour envoyer un paquet sur le réseau, ou sauver son état dans la BDD. Dans Serveur, ces objets sont dérivés, et le code spécifique y est ajouté.

Je me suis rendu compte que cette séparation était de fait très pratique, puisqu'elle est relativement simple à mettre en œuvre (pas besoin de se casser la tête pour décider d'où mettre le code) et qu'elle rend le code plus propre en séparant la logique de la partie purement communications.

Aucun commentaire: