Bei einem kürzlich durchgeführten Projekt musste ich Kibibyte von Bytes in Kilobytes konvertieren . Der Code war einfach genug:
var kBval = byteVal / 1024;
Nachdem ich das geschrieben hatte, funktionierte der Rest der Funktion und ging weiter.
Aber später begann ich mich zu fragen, ob ich gerade eine magische Zahl in meinen Code eingebettet hatte . Ein Teil von mir sagt, es sei in Ordnung, weil die Zahl eine feste Konstante ist und leicht zu verstehen ist. Aber ein anderer Teil von mir denkt, dass es super klar gewesen wäre, wenn man es in eine definierte Konstante wie gewickelt hätte BYTES_PER_KBYTE
.
Sind Zahlen, die bekannte Konstanten sind, wirklich so magisch oder nicht?
Verwandte Fragen:
Wann ist eine Zahl eine magische Zahl? und Wird jede Zahl im Code als "magische Zahl" betrachtet? - sind ähnlich, aber es gibt viel umfassendere Fragen als das, was ich stelle. Meine Frage konzentriert sich auf bekannte konstante Zahlen, die in diesen Fragen nicht angesprochen werden.
Eliminierung magischer Zahlen: Wann ist es Zeit, "Nein" zu sagen? ist ebenfalls verwandt, konzentriert sich jedoch auf das Refactoring und nicht darauf, ob eine konstante Zahl eine magische Zahl ist oder nicht.
1024
, da Ihr Entwicklerteam sonst die ganze Zeit damit verbringt, sich darüber zu streiten, ob es sich um "Kilobyte" oder "Kibibyte" handelt.
#define
KIBI
1024 ist, MEBI
als 1024 * 1024…
ZERO=0, ONE=1, TWO=2
und wenn Programme in anderen Sprachen portiert werden (oder die Programmierer nicht Verhalten ändern , wenn ihre Sprachumschaltung) Sie es dort sehen werden , und Sie müssen beten , dass jemand es nie ändern ONE=2
...
FOUR_HUNDRED_FOUR = 404
. Ich habe an einem anderen Projekt gearbeitet, bei dem sie gegen die Verwendung von Konstanten anstelle von Literalen kämpften. Sie hatten also Dutzende von Codezeilen, die so aussahenDATABASE = "database"