Табуляция или пробелы – миллиард файлов ждут ответа


Этот вопрос раскалывает мир программирования, как никакая другая тема. Это межплатформенная, межъязыковая пропасть, которая сталкивает программистов с варварами, которые просто неправильно форматируют свой код. Что выбрать для отступов – табуляция или пробелы?

Табуляция или пробелы - миллиард файлов ждут ответа

Это действительно важный вопрос, если только вы не новичок или настоящий варвар, который вообще не заботится об отступах в коде. Хуже того, возможно, вы смешиваете табуляцию и пробелы, не замечая этого. Для программистов Python это даже не обязательно, так как структура отступов является частью языка, но даже здесь вы можете выбрать использование табуляции или пробелов для достижения отступа. Мне только что пришлось разбираться с файлом Python с несогласованными интервалами и табуляциями, и я хотел бы, чтобы это было стандартизировано.

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

Этот спор между пробелами и табуляцией заставил гуглера Фелипе Хоффа пойти на крайние меры, чтобы выяснить правду. Он написал программу, которая изучила 400 000 репозиториев GitHub, содержащих 1 миллиард файлов и 14 терабайт кода, чтобы ответить на один вопрос – табуляция или пробел.

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

пробелы победили табуляцию с большим отрывом

Похоже, что в большинстве языков есть программисты, которые действительно не знают, где находится клавиша табуляции. Но что происходит с программистами на C и Go? Что бы ни заставляло программистов на C использовать табуляцию чаще, чем пробелы, это не влияет на программистов на C++, которые, похоже, потеряли клавишу табуляции почти так же, как ребята из Python и Ruby.

Минутку… программисты Python не используют табуляцию?! Это кажется почти антипитоническим, но это правда, PEP 8 – руководство по стилю для кода python – говорит совершенно ясно:

Пробелы являются предпочтительным методом отступа.

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

В Python 3 запрещено смешивать использование табуляции и пробелов для отступов.

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

При вызове интерпретатора командной строки Python 2 с опцией -t он выдает предупреждения о коде, в котором незаконно смешиваются табуляции и пробелы. При использовании опции -tt эти предупреждения становятся ошибками. Эти опции настоятельно рекомендуются!

Что ж, это все объясняет и оставляет программистов на C единственной загадкой табуляции.

Почему же так много программистов на C, но не на C++, используют табуляцию?


Добавить комментарий