C'est seulement mon avis, un getter ne devrait que retourner une simple valeur sans traitement ni modification car pour moi c'est une opération ultra basique (voire atomique).
Si on a un besoin de traitement sur un membre, on fait une fonction pour cela, même si c'est un tout petit traitement.
Et parfois, appeller une fonction getSomething() alors qu'elle fait plus que juste renvoyer la valeur peut être trompeur, j'en ai fait récemment l'expérience, exemple:
1 2 3 4 5 6 7
| class Foo
{
private:
double m_force;
public:
double getForce();
}; |
Pour moi getForce() doit ressembler à cela:
1 2 3 4
| double getForce()
{
return m_force;
} |
Or la force retournée était bien celle que j'attendais, sauf lorsque j'affichais sa valuer lors de calcul intermédiaire, pour la simple et bonne raison qu'elle était converti (en Newton) à l'initialisation et lors du getter():
1 2 3 4 5 6 7 8
| Foo::Foo(double force)
{
m_force = force*9.81;
}
double getForce()
{
return m_force/9.81;
} |
Donc si dans une focntion de Foo j'affiche la valeur de m_force elle sera "fausse" car je m'attends à avoir une valeur en Kg et non en Newton, surtout si aucun commentaire ne prévient.
Alors tu me diras qu'il suffit de modifier en:
1 2 3 4 5 6 7
| class Foo
{
private:
double m_forceNewton;
public:
double getForceKg();
}; |
Et que tout ètait de la faute du développeur qui n'a rien commenter (et je suis d'accord), mais je suis pas trop fan de ce genre de choses.
Partager