30

Je ne vois pas cela comme une conception détaillée, mais juste une reflection utile, qui peut se poser meme en faisant du TDD en écrivant ton TU.
En effet soit tes fonctions sont dans ta class soit elles sont externalisée dans d'autres classes. Probleme de responsabilité de la classe, que doit elle faire, doit elle etre extensible etc. J'admets que si tu veux utiliser les fonctions qui sont dans ta classe avec un prototype identique, cela peut sembler etre un cas d'utilisation de pointeur de methode, mais avant de trouver la solution je me serais plutot posé la question si ces fonctions doivent etre dans la classe (forte cohesion) ou dans des classes functors (faible couplage?).
Le lien de cohesion/couplage etant pour moi directement dependant de l'utilisation ou non des attributs privés non-accessible par setter/getter.

31

Je suis partiellement d'accord avec la démarche : je trouve que déterminer si on veut un couplage fort ou faible ne conduit pas directement à la solution technique qu'on va utiliser, et qui intervient bien plus tard. Je n'ai jamais eu à me demander si j'allais utiliser des functors, des pointeurs sur méthode ou quoi que ce soit d'autre en conception (d'ailleurs rien n'est dit qu'à ce niveau du développement le langage soit fixé, donc on ne peut tout simplement pas raisonner en supposant qu'on va faire du C++ ; il y a des problèmes bien plus haut niveau à régler avant de s'attarder à ces détails).
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

32

A là je suis d'accord qu'il y a des problèmes à plus haut niveau. Mais on pourrait facilement penser que si on a un faible couplage ces classes pourraient etre reutilisée par des algorithmes génériques etc comme le fait si bien la STL.

C'est du détails, et c'est vrai que si c'était le seul problème de design que je rencontre dans le code que j'utilise, je serais super content wink

33

34

Alors pour faire court, c'est une excellente question, mais j'ai peur que la réponse soit un peu trop complexe pour tenir en un post. Il existe plusieurs méthodes de développement logiciel, où le mot "développement" est à prendre au sens général : le codage n'est qu'une étape parmi d'autres, et elle est loin d'être la plus importante. Toutes ces méthodes sont en fait des transposition à l'informatique des méthodes de développement "classiques" qu'on peut trouver dans n'importe quelle industrie, elles prennent juste en compte quelques particularités de l'info (le fait que la phase de production soit assez différente, par exemple).

Je ne pense pas qu'il y ait de solution miracle pour assurer un bon développement, mais il y a quand même quelques grandes lignes qui deviennent incontournable quand on travaille sur un gros projet et/ou qu'il y a beaucoup de collaborateurs (ça va souvent ensemble d'ailleurs). Si c'est un sujet qui t'intéresse, peut-être que ça vaudrait le coup de créer un topic dédié pour plusieurs raisons : c'est un domaine vaste et assez complexe, il y a beaucoup à dire, et à moins que quelqu'un ici ait l'expérience nécessaire pour fournir un "cours" complet (j'en doute) il serait préférable de réunir les bonnes pratiques qu'on pu apercevoir ceux qui ont eu une formation sur ces sujets ou qui ont été amenés à les appliquer professionnellement smile

Pour ma part, c'était l'un des thèmes principaux de mes dernières années d'étude, je connais deux ou trois trucs et j'ai eu l'occasion de les appliquer, mais de là à prétendre pouvoir faire le tour du sujet ne serait-ce que de façon superficielle... il y a un gouffre ^^
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

35

36

Vive les void (*funcptr)(void *privdata);. tongue
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité