Точка с запятой в JavaScript: на свой вкус

в 8:00, , рубрики: javascript, Блог компании Voximplant, мнение, Программирование, Разработка веб-сайтов, Совершенный код, странное, чужие грабли

Точка с запятой в JavaScript: на свой вкус - 1Использование точек с запятой в JavaScript – один из самых горячо обсуждаемых топиков (сразу после пробелов и табов… два пробела, пожалуйста). Вот с ходу три ссылки, почему точки с запятой не нужны. Но так ли это на самом деле?

Transpilation и Uglification

Самое первое, что вы должны знать про точки с запятыми, это такая штука как “Automatic Semicolon Insertion (ASI)”. Это та фича, которая, собственно, и позволяет обсуждать нужность или ненужность точек с запятыми. Прочитайте о ней, если еще этого не сделали. Как и Кайл (пост), я считаю, что не стоит доверять ASI. Это не очень хорошая идея, по многим причинам.

Проблема со сложной логикой ASI исчезает, как только вы начинаете использовать транспайлер или минификатор. Например, Babel и UglifyJS2 автоматически добавляют точку с запятой в генерируемый код.

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

Linting the bad parts (непереводимая игра слов)

В логике работы ASI есть несколько очень неприятных моментов. Но до тех пор, пока вы используете ESLint с ключем no-unexpected-multiline, вы в безопасности. Достаточно убедиться, что ваша система сборки не соберет проект, если кто-то из разработчиков нарушил правило. Также, возможно, вас заинтересует еще одно правило, semi.

Зачем вообще отказываться от точек с запятой?

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

Ставить или не ставить точки с запятой – личное предпочтение

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

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

Причины использовать точку с запятой?

В своем посте Kyle обсуждает не только ASI, но и собственные предпочтения относительно использования точек с запятой. Настоятельно рекомендую почитать.

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

Выводы

Если вы не используете транспайлер/линтер, то настоятельно не рекомендую вам отказываться от точек с запятыми (в этом случае речь не идет о личных предпочтениях — это будет просто правильное использование JavaScript). Я настоятельно рекомендую использовать либо транспайлер, либо линтер, либо и то и другое вместе. В таком случае вы сможете использовать или не использовать точки с запятой, и это будет только ваше предпочтение – код не пострадает ни в том, ни в другом случае. До встречи в твиттере!

Автор: Voximplant

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js