Определение волшебной строки (или числа) достаточно ясное — это жестко закодированное значение, которое определяет, как работает ваша программа.
Они удобны и быстры в использовании; никакого дополнительного кода или импорта не требуется, и если вы знаете кодовую базу, вы знаете, какое значение использовать.
Так в чем дело? Зачем вообще рассматривать альтернативу?
Можно сказать, что волшебные строки — это плохая практика или антишаблон.
Предположим, что это так, но все же вопрос «почему?». Я надеюсь, что мое объяснение, аргументы и примеры помогут вам принять решение.
Я не думаю, что 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 .
Заинтересованы в масштабировании запуска вашего программного обеспечения? Ознакомьтесь с разделом Схема.