Bonjour,
J'ai un souci de conception qui me dérange de plus en plus et j'aimerai votre avis.
Je dois maintenir un programme de taille moyenne (140 fichiers, 60 classes).
Schématiquement, une classe "core" manage une tripotée de classes spécialisées A, B , C , D ... environ 40 classes, chaque classe spécialisée a environ 3 à 5 assesseurs.
chaque classe spécialisée est définie ainsi dans core :
Si je me focalise sur les get/set, j'ai donc dans core environ 120 à 200 set/get. et core ressemble à cela:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 classe core { public: ... private: class* A a; class* B b; class* C c; ... }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 classe core { public: ... setClass_a1() getClass_a1() setClass_a2() getClass_a2() setClass_a3() getClass_a3() setClass_b1() getClass_b1() setClass_b2() getClass_b2() setClass_b3() getClass_b3() setClass_b4() getClass_b4() ... private: class* A a; class* B b; }
car ma classe core est dirigée par une autre classe "manager" qui gère un moteur de script et qui a besoin d'accéder aux get/set des classes spécialisées. Comme il n'y a pas de lien entre "manager" et les classes spécialisées, les concepteurs ont tout fait passé par "core"
Bref, ca commence à m'embêter sérieusement car ma classe "core" devient au final illisible.
ensuite c'est le problème même des set/get
j'ai donc pour une variable dans une classe spécialisée
- un set:get pour cette variable [dans le fichier de définition de la classe spécialisée en question]
- un set/get dans la classe core qui ne sert que de relai. [dans le fichier de définition de la classe core]
- un set/get dans ma classe "manager" pour modifier effectivement la variable de la classe spécialisée. [dans le fichier de définition de la classe "manager"]
Je souhaiterai changer tout cela.
J'ai mes idées mais comme toute implication nécessite de changer énormément de choses, j'aimerai votre avis avant de tout changer pour éviter de tout rechanger à nouveau.
Déjà merci pour votre aide !
Partager