Sur un projet récent, j'avais besoin de convertir d'octets en kilobytes kibibytes . Le code était assez simple:
var kBval = byteVal / 1024;
Après avoir écrit cela, j'ai fait fonctionner le reste de la fonction et je suis passé à autre chose.
Mais plus tard, j'ai commencé à me demander si je venais d'incorporer un nombre magique dans mon code. Une partie de moi dit que c'était bien parce que le nombre est une constante fixe et doit être facilement compris. Mais une autre partie de moi pense que cela aurait été super clair si elle était enveloppée dans une constante définie comme BYTES_PER_KBYTE
.
Alors, les nombres qui sont des constantes bien connues sont-ils vraiment magiques ou non?
Questions connexes:
Quand un nombre est-il un nombre magique? et chaque numéro du code est-il considéré comme un "nombre magique"? - sont similaires, mais sont des questions beaucoup plus larges que ce que je demande. Ma question porte sur des nombres constants bien connus, qui ne sont pas abordés dans ces questions.
Éliminer les nombres magiques: quand est-il temps de dire "Non"? est également liée, mais est axée sur la refactorisation, par opposition à la question de savoir si un nombre constant est un nombre magique.
1024
, parce que sinon votre équipe de développement passera tout son temps à se disputer pour savoir si c'est "kilo-octets" ou "kibibytes".
#define
KIBI
que 1024, MEBI
1024 * 1024…
ZERO=0, ONE=1, TWO=2
et lorsque les programmes sont portés dans d'autres langues (ou que les programmeurs ne changent pas de comportement lorsqu'ils changent de langue), vous le voyez aussi et vous devez prier pour que personne ne le change en ONE=2
...
FOUR_HUNDRED_FOUR = 404
. J'ai travaillé sur un autre projet où ils étaient militants pour utiliser des chaînes constantes au lieu de littéraux, ils avaient donc des dizaines de lignes de code qui ressemblaient àDATABASE = "database"