Строковые литералы в JavaScript: Использовать ли двойные или одинарные кавычки?

Большинство разработчиков JavaScript (и TypeScript) знают, что язык позволяет выражать строковые литералы с помощью двойных кавычек («) или одинарных кавычек (‘). Учитывая, что оба способа выражения строк семантически эквивалентны, возникает вопрос, какой из них «правильный».

Как правило, когда речь идет о стиле кодирования, рекомендуется придерживаться традиций конкретного языка, с которым вы имеете дело (например, использовать camelCase для методов в JavaScript, но PascalCase в C#).

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

Просматривая некоторые популярные проекты JavaScript на GitHub, я заметил, что react, moment и express используют одинарные кавычки для строк. Однако другой популярный проект, tslib, использует двойные кавычки 🙄. Таким образом, хотя кажется, что одинарные кавычки более распространены, эта метрика не совсем убедительна.

Решающий фактор, который убедил меня лично, относится к веб-разработке с использованием JavaScript-фреймворка, использующего HTML-шаблоны, например, Angular или Vue.js. В частности, эти фреймворки позволяют нам использовать выражения JavaScript для значений атрибутов HTML. Возьмем, к примеру, следующее:

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

Итак, учитывая, что мы используем двойные кавычки для атрибутов HTML, единственный способ использовать двойные кавычки в выражении JavaScript будет выглядеть следующим образом:

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

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

Инструментарий стиля кодирования

Независимо от того, решили ли вы использовать одинарные или двойные кавычки в JavaScript, более важным вопросом является последовательное применение вашего соглашения во всей кодовой базе. ESLint — один из инструментов, который очень помогает в обеспечении последовательного стиля кодирования. Вы предоставляете ему конфигурационный файл со списком правил, описывающих ваши кодовые соглашения, и он укажет, где ваш код не соответствует заданным правилам. Для начала работы смотрите следующие ссылки:

  • Руководство по началу работы с ESLint
  • TypeScript ESLint: инструментарий для добавления поддержки TypeScript в ESLint.
  • ESLint Integrations: найдите плагин для добавления поддержки ESLint в вашу любимую IDE.

Добавьте правило quotes: ['error', 'single'] в ваш .eslintrc.js, чтобы заставить ESLint принудительно использовать одинарные кавычки.

Если в вашем коде много нарушений стиля, знайте, что некоторые нарушения правил могут быть автоматически исправлены ESLint (включая строковые литералы, использующие неправильный тип кавычек). Просто выполните команду eslint с параметром —fix, как показано ниже (измените параметр —ext в зависимости от того, на каком языке написан ваш код — JavaScript или TypeScript):

eslint -c .eslintrc.js --fix --ext .js ./
Войти в полноэкранный режим Выйти из полноэкранного режима

Я также могу настоятельно рекомендовать Prettier для поддержания единого стиля кодирования и исправления существующего исходного кода.

Какой из этих стилей вы решите использовать в своем коде на JavaScript / TypeScript, не так важно, как то, что вы будете придерживаться этого и последовательно применять это правило. Последовательное применение соглашений о кодировании не стоит недооценивать, поскольку это может значительно снизить когнитивные затраты при чтении кода. Использование таких инструментов, как ESLint и Prettier, может значительно помочь в обеспечении единства стиля кодирования, даже если многие разработчики вносят свой вклад в кодовую базу.

Оцените статью
Procodings.ru
Добавить комментарий