Могут ли в доброкоре запятисотить

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

Бесплатная консультация юриста

+7 (800) 301-07-30

Реклама jurik.ru

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

Зачем нужна точка с запятой

В большинстве языков программирования точка с запятой разделяет команды. Компьютер сам не может понять, где заканчивается одна инструкция и начинается другая, ему нужно явно сказать: «Всё, вот это — вся команда, выполняй её в таком виде».

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

«Казнить нельзя помиловать» в мире кода

Обычно, если не разделить команды, компилятор или интерпретатор просто сообщат об ошибке: мол, ожидали конец команды, а получили непонятно что. Но иногда ошибки не будет — при этом программа будет работать совсем не так, как задумывал разработчик. Это похоже на расстановку запятых в знаменитой фразе «Казнить нельзя помиловать».

Пример с автоинкрементом

В C-подобных языках есть команда автоинкремента — два плюса подряд (++), которую можно поставить до или после переменной. Место расположения критично:

Теперь представьте код, где оператор ++ оказался между двумя переменными без разделителей. Компьютеру всё равно на переносы строк и пробелы — из такого кода неочевидно, к какой переменной относится оператор. Он либо выполнит какое-то стандартное действие, либо выбросит ошибку. Точка с запятой снимает эту неоднозначность.

Почему именно точка с запятой?

На самом деле разделителем мог бы быть любой символ — например, знак параграфа §. Но создателям языков было удобнее использовать то, что есть на любой клавиатуре и легко набирается одним пальцем.

JavaScript и механизм ASI

В JavaScript точка с запятой тоже разделяет команды, однако если её убрать, код часто продолжает работать. Дело в механизме ASI (Automatic Semicolon Insertion) — автоматической вставке точек с запятой. Интерпретатор распознаёт команды и сам добавляет разделители в нужных местах.

Но ASI справляется не всегда. Например, в конструкции вида:

a = b + c
(d + e).print

компьютер не знает, что имел в виду разработчик: сложение и отдельный вызов метода — или вызов метода print у результата c(d + e). В таких случаях интерпретатор остановится и выдаст ошибку.

  1. Точка с запятой — способ явно сказать компьютеру, где заканчивается команда.
  2. Её отсутствие может не вызвать ошибку, но изменить логику программы.
  3. Механизм ASI в JavaScript — это подстраховка, а не повод отказываться от точек с запятой.
  4. Единый стиль в команде (ставить или не ставить) важнее, чем сам выбор стиля.

Примечание: конкретные контактные данные, упомянутые в источниках, скрыты в целях конфиденциальности: тел. +7 () -*-, e-mail: *@.