Magic Numbers sind Zahlen, die im Code ohne ausreichende Erklärung oder Kontext verwendet werden. Sie sind oft direkt in den Code geschrieben, ohne dass sie durch eine benannte Konstante oder Variable ersetzt werden, was es schwierig macht, ihre Bedeutung oder ihren Zweck zu verstehen. Die Verwendung von Magic Numbers kann die Lesbarkeit und Wartbarkeit des Codes erheblich beeinträchtigen.
Hier sind einige der Hauptmerkmale und Probleme von Magic Numbers:
Unklarheit: Die Bedeutung einer Magic Number ist oft nicht sofort ersichtlich. Ohne eine erklärende Konstante oder Variable weiß man nicht, warum diese Zahl gewählt wurde oder was sie repräsentiert.
Schwierige Wartung: Wenn dieselbe Magic Number an mehreren Stellen im Code verwendet wird, müssen alle Vorkommen aktualisiert werden, wenn sich der Wert ändert. Das kann fehleranfällig sein und führt leicht zu Inkonsistenzen.
Verletzung der DRY-Prinzipien (Don't Repeat Yourself): Das wiederholte Verwenden der gleichen Zahlen an verschiedenen Stellen im Code verstößt gegen das DRY-Prinzip, das empfiehlt, wiederverwendbaren Code zentral zu definieren.
Beispiel für Magic Numbers:
int calculateArea(int width, int height) {
return width * height * 3; // 3 ist eine Magic Number
}
Besseres Vorgehen: Statt die Zahl direkt im Code zu verwenden, sollte sie durch eine benannte Konstante ersetzt werden:
const int FACTOR = 3;
int calculateArea(int width, int height) {
return width * height * FACTOR;
}
In diesem verbesserten Beispiel ist FACTOR
eine benannte Konstante, die die Bedeutung der Zahl 3
klarer macht. Dies verbessert die Lesbarkeit des Codes und erleichtert die Wartung, da der Wert nur an einer Stelle geändert werden muss, falls erforderlich.
Zusammenfassung: Magic Numbers sind direkte numerische Werte im Code, die durch benannte Konstanten ersetzt werden sollten, um die Klarheit, Wartbarkeit und Verständlichkeit des Codes zu verbessern.