Разработчик из Google Фелипе Хоффа по итогам анализа более миллиарда файлов из 400 тысяч репозиториев на GitHub выяснил, что форматирование кода с помощью пробелов в общем случае используется чаще, чем форматирование с помощью табуляции. Об этом автор рассказал в блоге на Medium.
Для удобочитаемости программного кода подавляющее большинство программистов использует форматирование отступами — это позволяет выделить в коде отдельные блоки. При этом одни разработчики создают отступ несколькими пробелами, в то время как другие пользуются табуляцией. Основная проблема такого подхода заключается в том, что при работе над одним проектом нескольких человек, использующих разные отступы, форматирование сбивается и код становится трудно читаемым.
Фелипе Хоффа решил определить, какие отступы используются чаще, для чего использовал аналитический сервис BigQuery. С помощью сервиса автор отобрал и обработал 400 тысяч репозиториев, получивших наивысшую оценку пользователей на GitHub за период с января по май 2016 года, объем обрабатываемых данных при этом составил 14 терабайт.
В распоряжении исследователя оказалось более миллиарда файлов с расширениями .java, .h, .js, .c, .php, .html, .cs, .json, .py, .cpp, .xml, .rb, .cc, .go — то есть, содержащие код на 14 разных языках программирования. Из выборки были исключены дублирующиеся файлы, а также файлы небольшого размера, содержащие менее десяти строк с отступами. Если в файле использовались отступы, оформленные и пробелами, и табуляцией, то он учитывался в той или иной категории в зависимости от преобладающего метода форматирования.
Оказалось, что в большинстве случаев пробелы для оформления отступов используются чаще, чем табуляция. Из 14 языков программирования только в двух табуляция распространена шире, чем пробелы: с небольшим перевесом в файлах .c (C, C++) и практически повсеместно в файлах .go (Go).
Проблема разных отступов существует достаточно давно и часто является причиной безрезультатных споров в профессиональной среде. Фактически, вопрос «пробелы или табуляция» представляет собой образцовый холивар, в котором у обеих сторон есть свои аргументы(1, 2), но никто не намерен переходить на другую сторону. Явление также нашло отражение в современной культуре — например, одна из сцен в сериале «Кремниевая долина» строится именно вокруг проблемы «пробелы или табуляция».