J'ai rencontré cet idiome de programmation récemment:
const float Zero = 0.0;
qui est ensuite utilisé dans les comparaisons:
if (x > Zero) {..}
Quelqu'un peut-il expliquer si cela est vraiment plus efficace ou plus lisible ou maintenable que:
if (x > 0.0) {..}
NOTE: Je peux penser à d' autres raisons pour définir cette constante, je me demande simplement son utilisation dans ce contexte.
x
a le type float
, x > 0.0
force la promotion vers double
, ce qui pourrait être moins efficace. Ce n'est pas une bonne raison d'utiliser une constante nommée, juste pour vous assurer que vos constantes ont le bon type (par exemple 0f
, float(0)
ou decltype(x)(0)
).
13.37
n'est pas float
, ça l'est double
. Donc, si vous en vouliez un, float
il est concevable que votre tuteur ait eu raison. Dans certains contextes (par exemple, l'affectation à un flottant) 13.37
sera implicitement converti en celui float
que vous vouliez, et dans d'autres contextes (par exemple, la déduction de type de modèle), il ne le sera pas, tandis que le static const float
commence toujours comme le type que vous vouliez. Par conséquent, plus sûr pour le type. Attention, ce serait le cas 13.37f
! Il existe d'autres raisons pour éviter la macro que la "sécurité de type", donc il est tout aussi probable que le tuteur vous donne un mauvais argument.