Магические числа в коде: почему это плохо

«Магическое число» — это непонятное число прямо в коде, смысл которого знает только автор. Разберём, чем они вредны и как от них избавиться.

Дрон Кодер — программирование для детей и взрослых в игровой форме. Начать бесплатно

Что такое магическое число

Магическое число — это числовой литерал в коде без объяснения, что он означает. Например, строка «if age > 17» заставляет гадать: почему именно 17? Через месяц даже автор не вспомнит смысл.

Проблема не в самом числе, а в потерянном смысле: читатель видит значение, но не понимает намерение.

Чем они опасны

Если одно и то же число встречается в нескольких местах и его нужно поменять, легко пропустить одно из вхождений — появится трудноуловимая ошибка.

Код с магическими числами тяжело читать и сопровождать: каждое число приходится расшифровывать заново.

Как исправить: именованные константы

Вынесите число в переменную с понятным именем: «COVERSHENNOLETIE = 18», а в условии пишите «if age >= COVERSHENNOLETIE». Теперь смысл виден сразу.

Такие константы обычно пишут заглавными буквами и держат вверху файла или модуля. Поменять значение нужно в одном месте — и оно обновится везде.

Когда число оставить можно

0 и 1 в очевидных ситуациях (счётчик начинается с 0, шаг цикла 1) обычно не считают магическими — их смысл понятен из контекста.

Если же число несёт бизнес-смысл (цена, лимит, коэффициент), ему почти всегда лучше дать имя.

Частые вопросы

Любое число — это магическое? Нет, только то, чей смысл неочевиден из контекста.

Где держать константы? Рядом с местом использования или в отдельном блоке настроек наверху файла. Хорошую привычку удобно тренировать с первых программ в «Дрон Кодере».

Начать игру бесплатно
Попробуй прямо здесь
Уровень 1

Задание

Все обучающие игры «Дрон Кодер»

Одна вселенная — много модулей. Программирование, математика и логика в одной игре: пиши код, считай, решай задачи — а дрон-фермер летит по полю и собирает урожай. В каждом модуле первый уровень бесплатный, без регистрации.

📈 Математика · алгебра и графики
📖 Русский язык