Что такое синтаксический сахар

Что такое синтаксический сахар

Это способ сделать код более читаемым для человека

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

Что такое синтаксический сахар

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

Можно сделать код короче

Проще всего синтаксический сахар показать на примерах. Допустим, у нас значение одной переменной зависит от другой:

// исходная переменная
var st = "true";

// если она истинна
if (st == "true") {
		// то присваиваем второй переменной 'Y'
    var hasName = 'Y';
} else {
		// иначе присваиваем второй переменной 'N'
    var hasName = 'N';
};

Этот же самый фрагмент можно записать короче, используя синтаксический сахар — тернарный оператор, который обрабатывает сразу три параметра:

hasName = name ? 'Y' : 'N';

Этот код делает всё то же самое:

  1. Проверяет, в name — истина или ложь.
  2. Если истина — присваивает переменной hasName значение 'Y'.
  3. Иначе присваивает ей значение 'N'.

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

Сделать код проще

Есть сахар, который, наоборот, делает код проще. Например, вот классический способ организовать цикл, чтобы вывести все его элементы на экран:

// объявляем простой цикл, чтобы вывести все элементы массива
for (let i = 0; i < massiv.length; i++) {
  console.log(massiv[i]);
}

А вот то же самое, но с синтаксическим сахаром:

for (const element of massiv) {
  console.log(element);
}

Здесь сразу понятно, что мы перебираем все значения массива massiv, кладём их в переменную element и выводим её на экран.

Ещё примеры синтаксического сахара

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

Например, вот классический способ сделать объект в JavaScript:

var obj = new Object();

А вот более короткий вариант с сахаром:

var obj = {};

Первая строчка — классический способ завести пустой массив, вторая — более привычный сахарный способ:

var arr = new Array();
var arr = [];

Если в JavaScript нужно проверить что-то с помощью регулярных выражений, переменную с этим выражением можно задать двумя способами: традиционным и с сахаром. Сделают они одно и то же, просто вторая будет короче:

var regex = new RegExp('something');
var regex = /something/;

А вот пример чистого сахара. Мы объявляем анонимную функцию, и тут же её выполняем:

(function() { ... })();

В каких языках есть синтаксический сахар

Почти во всех языках программирования есть сахар, причём чем высокоуровневее язык, тем больше сахара можно в нём встретить. Меньше всего сахара в Ассемблерах и в странных языках типа Brainfuck.

Обязательно ли использовать сахар в коде

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

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

Круг жизни.

Текст:

Михаил Полянин

Редактор:

Максим Ильяхов

Художник:

Алексей Сухов

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Соцсети:

Алина Грызлова

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
Как компьютер научился обыгрывать человека в го и StarCraft
Как компьютер научился обыгрывать человека в го и StarCraft

И какая от этого польза человечеству

Давид Ян
Давид Ян о системе, которая предскажет ваше увольнение

Большой разговор в подкасте «Запуск завтра».

Что такое искусственный интеллект

В этой статье ни одной шутки про «Скайнет».

medium
Что такое цепи Маркова и как они работают
Что такое цепи Маркова и как они работают

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

easy
«Я не успеваю писать код, но участвую во всех важных обсуждениях». Как работает руководитель разработки Яндекс.Практикума
«Я не успеваю писать код, но участвую во всех важных обсуждениях». Как работает руководитель разработки Яндекс.Практикума

От первого сайта за 300$ до руководителя в Яндексе.

easy
Разбор: непобедимый алгоритм для игры «4 в ряд»
Разбор: непобедимый алгоритм для игры «4 в ряд»

Разбор видео Code Bullet про трюки в оптимизации алгоритмов

medium
Ну что ж, переходим на Linux. С чего начать?
Ну что ж, переходим на Linux. С чего начать?

Краткое пособие по импортозамещению

easy
Как биг-дата управляет миром: на примере магазинов

Вокруг появляется много одних и тех же магазинов — почему так происходит и как они устроены.

easy
Отлить в бетоне!
Отлить в бетоне!

Сага о генераторах статических сайтов.

medium
10 главных конструкций языка Kotlin
10 главных конструкций языка Kotlin

Почти как Java, но есть отличия.

easy
easy