Определение волшебной строки (или числа) достаточно ясное — это жестко закодированное значение, которое определяет, как работает ваша программа.
Они удобны и быстры в использовании; никакого дополнительного кода или импорта не требуется, и если вы знаете кодовую базу, вы знаете, какое значение использовать.

Так в чем дело? Зачем вообще рассматривать альтернативу?

Можно сказать, что волшебные строки — это плохая практика или антишаблон.
Предположим, что это так, но все же вопрос «почему?». Я надеюсь, что мое объяснение, аргументы и примеры помогут вам принять решение.
Я не думаю, что const всегда является решением для любого проекта любого масштаба, но я хотел бы поделиться некоторыми аргументами в пользу их использования.

Идентификация
Волшебная строка — это просто слово, значимое для автора кода на момент его написания (обещаю, через несколько месяцев вам придется потратить лишнюю минуту на выяснение того, что это означает).
При непосредственном использовании в качестве магической строки value можно спутать с чем-то другим, особенно в крупномасштабных приложениях, тогда как const более четко указывает, что это такое.

Пример: 'personal' против const USER_PROFILE_TYPE = 'personal';

И в дополнение к этому, если одно и то же слово представляет разные вещи в разных компонентах, его можно легко заменить по ошибке.

Использование магических чисел приносит дополнительные неудобства. В то время как слова могут говорить сами за себя (по крайней мере, до некоторой степени), числа почти никогда не бывают таковыми, а случайно заменить их еще проще.

Пример: '1024' против const MAX_FILE_SIZE = '1024';

Только из-за этого я бы посоветовал избегать магии в вашем коде, но это еще не все…

Контекст и организация кода
Говоря о константах, можно подумать о чем-то довольно избыточном — присваивании строки const с тем же именем, что-то вроде этого:

const small = 'small';
const medium = 'medium';
const large = 'large';

Правда, смысла в этом очень мало. Однако, если у вас есть несколько значений, которые принадлежат друг другу или имеют общий контекст, у вас есть следующий вариант:

const SIZES = {
  small: 'small';
  medium: 'medium';
  large: 'large';
}

Мы можем сделать еще один шаг и организовать наш код для дальнейшего улучшения читабельности:

const COLORS = {
  primary: 'FF9933';
  secondary: '138808';
  tertiary: '000080';
}

const GRAYSCALE = {
  white: 'FFFFFF';
  ink: '333';
}

const COLOR_PALETTE = {
  COLORS,
  GRAYSCALE,
}

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

И, конечно же, когда вам нужно использовать одно и то же значение в нескольких местах, даже в одном и том же файле, вы должны использовать const.

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

Вот как избежать первого и свести к минимуму второе:

const COMPONENT_SIZE = {
  sm: 'small'
  md: 'medium'
};

<ui-button
  :size="COMPONENT_SIZE.sm"
/>

<ui-button
  :size="COMPONENT_SIZE.md"
/>

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

Intellisense
Просто, но весьма полезно. Наличие констант позволяет вам всегда выбирать из допустимых вариантов, не рискуя сделать опечатку.

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

Удачного кодирования!

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .

Заинтересованы в масштабировании запуска вашего программного обеспечения? Ознакомьтесь с разделом Схема.