Em um projeto recente, eu precisei converter de bytes para kilobytes kibibyte . O código era direto o suficiente:
var kBval = byteVal / 1024;
Depois de escrever isso, peguei o restante da função funcionando e segui em frente.
Mais tarde, porém, comecei a me perguntar se havia acabado de incorporar um número mágico ao meu código. Parte de mim diz que foi bom porque o número é uma constante fixa e deve ser facilmente entendido. Mas outra parte de mim pensa que seria super claro se envolto em uma constante definida como BYTES_PER_KBYTE
.
Então, os números que são constantes conhecidas são realmente tão mágicos ou não?
Perguntas relacionadas:
Quando um número é um número mágico? e Todo número no código é considerado um "número mágico"? - são semelhantes, mas são perguntas muito mais amplas do que o que estou perguntando. Minha pergunta está focada em números constantes bem conhecidos, que não são abordados nessas perguntas.
Eliminando números mágicos: quando é hora de dizer "não"? também está relacionado, mas está focado na refatoração, em vez de se um número constante é ou não um número mágico.
1024
, porque, caso contrário, sua equipe de desenvolvimento passará todo o tempo discutindo sobre se são "kilobytes" ou "kibibytes".
#define
KIBI
1024, MEBI
como 1024 * 1024 ...
ZERO=0, ONE=1, TWO=2
e quando os programas forem portados para outras línguas (ou os programadores não mudam de comportamento ao mudar de idioma), você também verá lá e terá que rezar para que nunca alguém mude para ONE=2
...
FOUR_HUNDRED_FOUR = 404
,. Eu trabalhei em outro projeto onde eles eram militantes sobre o uso de strings constantes em vez de literais, então eles tinham dezenas de linhas no código que pareciam:DATABASE = "database"