Bonjour,
Je suis à la recherche d'une fonctionnalité un peu spécifique qui nécessite que j'explique brièvement l'architecture de mon programme. Tout est ci-dessous, et mes deux questions sont à la fin.
SITUATION
Je suis en train de créer un jeu vidéo sur Unity en C#
ENUMERATEURS
J'utilise des énumérateurs comme des constantes afin de rendre mon code plus lisible. Il y a par exemple des fonctions qui demandent un paramètre entier (qui peut correspondre au numéro d'un objet à instancier, ou au mode de fonctionnement de cet objet), et j'utilise les énumérateurs dans ces situations, afin que mon code soit absolument lisible, et aussi pour ne pas m'emmêler les pinceaux au fur et à mesure que mes énumérateurs s'enrichissent.
Exemple:
HIERARCHIE
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 InstancierAnimal((int)INSECTE.CHENILLE); // Instancier l'objet dont le numéro correspond à "INSECTE.CHENILLE" ChangerMode((int)COMPORTEMENT.PASSIF); // Attribuer (à l'animal) le comportement dont le numéro correspond à "COMPORTEMENT.PASSIF" ExecuterMeteo((int)METEO.PLUIE); // Exécuter la condition météorologique dont le numéro correspond à "METEO.PLUIE"
Etant donné que les énumérateurs sont utilisés un peu partout dans l'ensemble de mes classes, il existe une classe mère dont presque toutes les autres héritent : "CODENAMES", et celle-ci contient principalement les énumérateurs (ainsi qu'une poignée de méthodes qu'il est utile d'implémenter aussi haut dans la hiérarchie).
SOUCI
Mon "souci" c'est que j'ai maintenant écrit plusieurs dizaines d'énumérateurs différents et qu'il y a tout un tas de classes qui n'en utilisent que deux ou trois. Je ne peux pas vraiment "descendre" les énumérateurs dans la hiérarchie, mais la plupart sont inutiles. Par exemple, l'énumérateur "METEO" est accessible par la classe "Animal", mais ça ne lui sert jamais à rien.
PROPOSITION
Mon idée, dont je ne sais pas encore comment elle peut être réalisée, consisterait à créer des "paquets" d'énumérateurs qui pourraient être intégrés à discrétion dans les différentes classes.
Par exemple, la classe "Animal" importerait un paquet d'énumérateurs qui contiendrait "INSECTE" et "COMPORTEMENT", mais pas "METEO"
Autre piste : on pourrait utiliser le mot-clé "using", comme quand on intègre des bibliothèques dans les classes.
QUESTIONS
- Pensez-vous que cela soit tout simplement utile? Est-ce que mon code est suscepible d'être plus performant ainsi? En d'autres termes, est-ce utile de ne pas intégrer des centaines de constantes inutilisées dans chaque classe?
- Comment procéderiez-vous pour créer et intégrer les "paquets d'enumérateurs" tels que je les envisage?
Merci d'avance pour vos conseils!
Partager