En un proyecto reciente, necesitaba convertir de bytes a kilobytes de kibibyte . El código fue lo suficientemente sencillo:
var kBval = byteVal / 1024;
Después de escribir eso, conseguí que el resto de la función funcionara y seguí adelante.
Pero más tarde, comencé a preguntarme si acababa de incrustar un número mágico en mi código. Una parte de mí dice que estaba bien porque el número es una constante fija y debe entenderse fácilmente. Pero otra parte de mí piensa que habría sido súper claro si estuviera envuelto en una constante definida como BYTES_PER_KBYTE
.
Entonces, ¿los números que son constantes bien conocidos son realmente mágicos o no?
Preguntas relacionadas:
¿Cuándo es un número un número mágico? y ¿Cada número en el código se considera un "número mágico"? - son similares, pero son preguntas mucho más amplias de lo que estoy preguntando. Mi pregunta se centra en números constantes bien conocidos que no se abordan en esas preguntas.
Eliminando números mágicos: ¿Cuándo es el momento de decir "No"? también está relacionado, pero se centra en la refactorización en lugar de si un número constante es un número mágico o no.
1024
, porque de lo contrario su equipo de desarrollo pasará todo su tiempo discutiendo sobre si es "kilobytes" o "kibibytes".
#define
KIBI
como 1024, MEBI
como 1024 * 1024 ...
ZERO=0, ONE=1, TWO=2
y cuando los programas son portados a otras lenguas (o los programadores no cambiar el comportamiento cuando se cambia su lenguaje) verás que allí también y hay que rezar que jamás alguien a cambiar a ONE=2
...
FOUR_HUNDRED_FOUR = 404
. I trabajado en otro proyecto donde estaban militantes sobre el uso de cadenas constantes en lugar de literales, por lo que tenían decenas de líneas de código que parecían,DATABASE = "database"