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

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

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

Теперь, если бы я сказал что-то в пользу любой из сторон, у меня были бы союзники. Но мне удалось оттолкнуть обе группы, преуменьшая серьезность вопроса.

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

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

Конфликт

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

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

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

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

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

Символ табуляции

При нажатии кнопки табуляции на клавиатуре выводится символ табуляции. Он интерпретируется редактором как количество пробелов, обычно 4 или 8 пробелов.

Файлы, отформатированные с помощью табуляции, обычно меньше, поскольку один символ табуляции представляет несколько пробелов. Не то чтобы это было большой проблемой в наше время.

Длина табуляции интерпретируется по-разному в IDE и редакторах. Это также настраивается, поэтому, если вы хотите иметь таблицы из 6 пробелов — вы можете. Это делает вкладки отличным инструментом для людей с нарушениями зрения — их можно настраивать.

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

Аргумент в пользу пространств

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

Вероятно, вы откуда-то скопировали/вставили код, и он оказался перепутанным из-за различий в отступах.

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

Разница в том, что это решение принимает только автор кода, а не читатель. Пробелы запекают решения форматирования в самом коде. Чтение кода с другим форматированием не меняет его поведения, но это не так, как задумал разработчик.

Не только технические дебаты

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

Речь идет о том, кто отвечает за указание отступов.

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

Для меня это кульминация всех споров и дебатов по этой теме, если мы отбросим в сторону личные предпочтения.

Резюме

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

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

Если бы подход был откровенно неверным, его бы уже исключили. Тот факт, что дебаты все еще продолжаются, означает, что правда зависит от нас.

Первоначально опубликовано на https://alexkondov.com.