nathan_g a écrit :
Y a t-il mieux ? Est ce que ce genre de code est suffisamment propre pour ce que je veux faire ?
|
On peut probablement faire mieux, tant au point de vue conception, réutilisabilité, que performance.
Ta fonction template carre, je l'appelerai plutot compose_carre_with, ce qui est le cas d'école de la mauvaise conception que l'on qualifie dans la littérature, de "blob" (j'en ignore l'origine). carre(x), c'est x * x, et ça ne dépend pas d'une fonction que l'on applique au préalable à x.
Ensuite, tes fonctions membres sinus et cosinus, elles ont this const, en toute rigeur. Regarde ce que ça implique ...
En fait, je te conseillerais plutot de faire un foncteur Cosinus, Sinus, et de les invoquer en tant que paramètre générique dans ta fonction de résolution d'équations (ou carré ...). Sans oublier de mettre en paramètre générique le type que tu utilises, double ici.
Question performances, l'appel de fonctions membres via pointeur, on peut réver mieux. Surtout qu'avec ta façon de composer les fonctions, en plus de perdre en réutilisabilité, ben tu fais peut etre 2 appels.