Bonjour,
j'espère ne pas trop vous décourager par la longueur de ce post, mais j'ai vraiment besoin d'aide avec la conception de classes. Je tente de modéliser un programme en créant des classes vbscript, et j'aurais besoin de quelques conseils.
Mes classes sont reliées à une base de donnée sql server en utilisant ADO, et chaque fois que je cré un nouvel ensemble de classes, j'arrive toujours au même questionnement à propos du chargement ou de l'enregistrement des données. À savoir est-ce que je dois optimiser la vitesse de traitement ou réduire la redondance de code, j'explique par un exemple simple:
Supponsons que j'ai les classes Class1, Class2 et Class3
Class1 possède dans ses attributs une liste d'objets de Class2 et Class2 possède dans ses attributs une liste d'objets de Class3.
À ces 3 classes sont associées 3 tables ayant les mêmes relations soit des relations de 1 à plusieurs entre Table1, Table2 et Table3
Je peux avoir utiliser l'objet de la Class2 seul, sans passer par un objet de Class1, même chose pour l'objet de Class3, je peux avoir à l'utliser sans passer par un objet de Class2 et Class1.
J'hésite toujours entre 2 solutions et je ne sais jamais laquelle favoriser lorsque j'ai à enregistrer le contenu de l'objet de Class1.
Solution envisageable #1
Appeler une routine de l'objet de Class1 qui boucle et appelle la routine de chargement(ou enregistrement) de chaque objet de Class2 et cette routine de l'objet de Class2 à son tour boucle pour appeler la routine de chargement(ou enregistrement) de chaque objet de Class3.
Dans ce cas #1, j'aurai probablement une grande dégradation des performances puisque je devrai ouvrir plusieurs recordset, soit le nombre d'objets de Class2 contenus dans l'objet de Class1 multiplié par le nombre d'objets de Class3 contenus dans l'objet de Class2.
Solution envisageable #2
Dans l'objet de Class1 j'ai une routine qui ouvre un recordset pour les donnés de l'objet de Class1, un autre pour la liste des objets de Class2, et un autre qui s'occupe de la liste des objets de Class3.
Dans ce cas #2, j'ai beaucoup moins d'ouverture/fermeture de recordset, quoique j'aie plus d'enregistrements dans ces recordsets. Le désavantage par contre est qu'étant donné que je peux utiliser un objet de Class2 sans objet de la Class1, j'ai quand même besoin dans la Class2 d'une routine de chargement(ou enregistrement) des données de cet objet. Et donc, je me retrouve avec du code en double ou en triple qui fait sensiblement la même chose et en tant que programmeur je déteste celà, ça fait du code plus difficile à maintenir.
Donc pour conclure, j'ai une solution d'un côté très belle et très encapsulé, avec aucun code qui se répète, mais une dégradation possible des performances. Et de l'autre côté j'ai une solution plus performante en terme de rapidité, mais plus difficile à maintenir étant donné le code qui se répète à plusieurs endroits.
Peut-être y a-t-il une autre façon de voir complètement différente à laquelle je n'aurais pas pensé, si quelques-uns d'entre vous pourrait m'éclairer je serais très heureux.
Merci
Jonathan
Partager