Меньше магии — больше констант!
Я работаю на проекте, где константы живут на каждом шагу: таймеры для сторис, коэффициенты расчётов, настройки сборки, лимиты для push-уведомлений. Когда эти цифры и строки разбросаны по файлам, команда тратит часы на поиск «злосчастных 42». Поэтому мы выделили отдельный модуль constants и перестали страдать от магических чисел.
Чужому разработчику сложно понять, что значит 3000. Это таймаут? Ограничение на символы? Порог аналитики? Названная константа вроде STORY_AUTO_CLOSE_TIMEOUT_MS отвечает на вопрос без комментариев.
Если значение потребовалось изменить, приходится искать все вхождения. Ошибка в одной точке — и мы ломаем поведение. Одна запись в constants.ts решает задачу заменой в одном месте.
Frontend, backend, аналитики и маркетинг должны опираться на одни цифры. Константы, вынесенные в общий слой, снимают расхождения и облегчают документацию.
// constants/timeouts.ts
export const STORY_AUTO_CLOSE_TIMEOUT_MS = 3000;
export const NOTIFICATION_HIDE_DELAY_MS = 5000;
export const ANALYTICS_BATCH_SIZE = 50;timeouts, featureFlags, experiments, pricing — так проще ориентироваться.shared-config.Каждый такой параметр — кандидат на константу с говорящим именем и комментарием.
Не забывайте про окружения. Dev-стенд, stage, trunk и production живут на разных базовых URL и API-ключах, а иногда и на отдельных шинах событий. Константы вроде DEV_API_BASE_URL, STAGE_CUSTOMER_PORTAL_URL и PROD_SUBSCRIPTION_PACKAGE_IDS избавляют от ошибок при сборке и ресинке. Меняется адрес или токен — вы правите одну запись, и вся команда сразу работает с актуальными данными.
constants и eslint-правилом, которое запрещает магические числа (например, no-magic-numbers).Магические числа — это технический долг, который накапливается незаметно. Создайте центральный файл констант, подпишите каждое значение и держите рядом ссылку на источник. Так следующий разработчик поймёт, почему таймер стоит именно на 3 секунды, а продукт-менеджер не будет гадать, откуда взялся коэффициент конверсии. Меньше магии — больше ясности и скорости команды.