Таб — это семантический отступ: один символ — один уровень вложенности.
Табуляция кодирует именно структуру, а не визуальный пиксельный сдвиг: каждый таб — это новый уровень, а конкретная ширина отображения остаётся делом редактора. Так мы разделяем понятия «отступ» (структура) и «выравнивание» (косметика), избегая путаницы и велосипедов в обсуждениях стиля. Редакторы и форматтеры легко проводят границу: табы — для отступов, пробелы — для выравнивания по символам. В результате код становится устойчивее к изменениям настроек шрифта и не «плывёт» при разных предпочтениях участников команды.
Табы повышают доступность и комфорт: каждый разработчик настраивает ширину под себя.
Кому-то удобны широкие отступы на 8, кому-то — компактные на 2–3, а на маленьком экране или при особенностях зрения разница критична. С табами каждый выставляет tab size в своём IDE, не ломая общий вид структуры кода для других. Это снижает усталость, ускоряет чтение и уменьшает когнитивную нагрузку на обзорах. С пробелами же команда вынуждена закреплять одну «жёсткую» ширину для всех, что компромисс далеко не для каждого.
Табы экономят байты: один символ вместо 2–8 пробелов на уровень вложенности.
Если проект придерживается, скажем, 4 пробелов на уровень, то два уровня — это 8 байт против 2 байт с табами. Для файла на 10 000 строк с в среднем двумя уровнями вложенности разница составит порядка 60 КБ (≈6 байт экономии на строку), а на репозитории из тысяч файлов это уже мегабайты трафика и диска. Меньше «шумных» символов — быстрее диффы и чуть компактнее патчи, особенно заметно в больших монорепозиториях. Компрессия снижает разрыв, но базовое преимущество в сыром размере остаётся на стороне табов.
Табы стабилизируют диффы и историю: изменение предпочтений ширины не трогает контент.
Стратегия «табы для отступов, пробелы для выравнивания» минимизирует косметические изменения: структура остаётся прежней при любом tab size, а выравнивание затрагивает лишь локальные места. Это делает код‑ревью чище: в дифф попадают реальные правки, а не каскады сдвигов. Недаром такие гиганты как Linux kernel CodingStyle и gofmt придерживаются именно такого подхода — он проверен временем и инструментами. В долгой перспективе это экономит часы на ревью и снижает вероятность конфликтов слияния.