Документ Why I prefer no tabs in source code начинается с очень разумной строчки:

Многие программисты смешивают в исходниках пробелы с табами — символами табуляции с ASCII-кодом 09, вместо того, чтобы использовать несколько (обычно 8) пробелов вместо таба.

Но дальше, вместо того, чтобы эту мысль развить, автор зачем-то переходит к другим, не очень разумным аргументам. Поэтому и существует «контр-документ» http://derkarl.org/why_to_tabs.html, который с точки зрения чёткости аргументации мне нравится больше, несмотря на то, что сам я в своём коде всегда использую пробелы.

Important.svg Смешивание пробелов с табами — это как раз то самое ужасное, что может быть в форматировании кода! Например, в UNIX’е многие (похоже, стандартно) считают, что размер таба — 8 символов, но отступ при этом — 4 символа. Получается, что 1 уровень — это 4 символа, 2 уровень — 1 таб, 3 уровень — 1 таб и 4 символа, и т. п. А потом прихожу я со своим нормальным размером таба в 4 символа и несмотря на то, что с авторами софтины, которую я правлю, мы сходимся во мнении насчёт размера отступа, его код выглядит у меня совсем не так, как планировалось — нечётные и чётные уровни будут попарно равны, потому что 1 таб = 4 символа.

Кстати, в защиту табов есть ещё один аргумент — когда код выравнивается табами, нигде в середине файла не может случайно попасться строка, выровненная «нецелым» отступом в, например, 7 пробелов. Пример: строка-конец многострочного массива (PHP). То есть на строке скобка и точка с запятой «);». В том же файле перед закрывающимися скобками — пробелы. Пришёл человек и решил автоматически переформатировать код — заменить « )» на «)», то есть, убрать пробелы перед закрывающимися скобками. Итог — строка со скобкой выровнена на (n*4-1) символ.

А вышеописанные плюсы пробелов вовсе не в том, что выравнивание пробелами корректнее. Плюс пробелов в том, что с ними тупо проще: