Eu me deparei com esse idioma de programação recentemente:
const float Zero = 0.0;
que é então usado nas comparações:
if (x > Zero) {..}
Alguém pode explicar se isso é realmente mais eficiente, legível ou sustentável do que:
if (x > 0.0) {..}
NOTA: Posso pensar em outras razões para definir essa constante. Estou apenas pensando em seu uso neste contexto.
x
tiver tipo float
, x > 0.0
força a promoção para double
, o que pode ser menos eficiente. Essa não é uma boa razão para usar uma constante nomeada, apenas para garantir que suas constantes tenham o tipo correto (por exemplo 0f
, float(0)
ou decltype(x)(0)
).
13.37
não é float
, é double
. Então, se você queria um float
, é concebível que seu tutor estivesse correto. Em alguns contextos (por exemplo, a atribuição a um flutuador) 13.37
será implicitamente convertido para o float
que você queria, e em outros contextos (por exemplo, dedução de tipo de modelo) não será, enquanto o static const float
sempre começa como o tipo que você pretendia. Portanto, mais seguro para o tipo. Lembre-se, assim seria 13.37f
! Existem outras razões para evitar a macro que não a "segurança de tipo", portanto, é tão provável que o tutor esteja argumentando mal.