Магические числа в коде: почему это плохо
«Магическое число» — это непонятное число прямо в коде, смысл которого знает только автор. Разберём, чем они вредны и как от них избавиться.
Что такое магическое число
Магическое число — это числовой литерал в коде без объяснения, что он означает. Например, строка «if age > 17» заставляет гадать: почему именно 17? Через месяц даже автор не вспомнит смысл.
Проблема не в самом числе, а в потерянном смысле: читатель видит значение, но не понимает намерение.
Чем они опасны
Если одно и то же число встречается в нескольких местах и его нужно поменять, легко пропустить одно из вхождений — появится трудноуловимая ошибка.
Код с магическими числами тяжело читать и сопровождать: каждое число приходится расшифровывать заново.
Как исправить: именованные константы
Вынесите число в переменную с понятным именем: «COVERSHENNOLETIE = 18», а в условии пишите «if age >= COVERSHENNOLETIE». Теперь смысл виден сразу.
Такие константы обычно пишут заглавными буквами и держат вверху файла или модуля. Поменять значение нужно в одном месте — и оно обновится везде.
Когда число оставить можно
0 и 1 в очевидных ситуациях (счётчик начинается с 0, шаг цикла 1) обычно не считают магическими — их смысл понятен из контекста.
Если же число несёт бизнес-смысл (цена, лимит, коэффициент), ему почти всегда лучше дать имя.
Частые вопросы
Любое число — это магическое? Нет, только то, чей смысл неочевиден из контекста.
Где держать константы? Рядом с местом использования или в отдельном блоке настроек наверху файла. Хорошую привычку удобно тренировать с первых программ в «Дрон Кодере».
Начать игру бесплатно