Всегда следует использовать пробелы, потому что одни вкладки недостаточно гибки для многих стилей, а смешивание вкладок и пробелов (почти) всегда приводит к абсолютному беспорядку.
Для примера одного стиля, который обычно требует пробелов, рассмотрим что-то вроде:
call_some_function(parameter1,
parameter2,
parameter3,
parameter4,
parameter5,
parameter6,
parameter7);
Если вы не хотите переименовать все свои функции, чтобы они были точным кратным размеру вкладок (минус одна для скобок), то сами по себе просто не будут этого делать.
Что касается смешивания вкладок и пробелов, вы почти сразу же столкнетесь с серьезной проблемой: вкладки не всегда одинаково расширяются. Некоторое программное обеспечение обрабатывает вкладку как эквивалентное определенному количеству пробелов. Другое программное обеспечение будет расширять вкладку по модулю определенного количества пробелов - например, элемент после вкладки всегда будет начинаться с номера столбца, кратного (скажем) 8.
Даже если вы можете предотвратить смешивание пробелов с вашими вкладками, у вас все еще есть проблема: вкладки также плохо работают со шрифтами переменной ширины. Эта проблема возникает, когда (например) вы хотите выровнять завершающие комментарии:
a.m = 9; // this is the slope
a.i = 4; // this is the intensity
a.x = 1; // this is the x-intercept
Поскольку они стоят прямо сейчас, все они выстраиваются идеально. Однако при просмотре шрифтом переменной ширины все становится ужасно. С пробелами комментарии могут (часто будут) слегка выровняться. Однако с вкладками смещение часто становится довольно радикальным:
a.m = 9; // this is the slope
a.i = 4; // this is the intensity
a.x = 1; // this is the x-intercept
Внезапно небольшая разница в ширине между 'i' и 'm' или 'x' в нашем шрифте переменной ширины была увеличена до полной табуляции.
Суть в том, что почти любое изменение в том, как вы просматриваете код с помощью вкладок, независимо от того, насколько это, казалось бы, тривиально, может и обычно приводит к нечитаемому беспорядку.
Чтобы ответить на ваши другие вопросы: другие уже указали на это, но я не могу представить, чтобы кто-либо в программном редакторе (или многое другое) фактически использовал пробел для вставки пробелов, поэтому ваш вопрос о «наборе текста spacespacespacespace» не имеет значения, потому что никто так не делает. Аналогично с обратным интервалом: трудно представить редактор, который потребовал бы нажатия BkSpcчетыре раза, чтобы перейти к предыдущей позиции табуляции, поэтому (опять же) вопрос не имеет значения.
Итог: с вкладками все в порядке, если вы (и только вы) когда-либо просматриваете свой код, и вы делаете это только с помощью одного редактора, который никогда не перенастраивается (вообще!). Однако эти условия настолько близки к невозможному Убедитесь, что есть только один разумный ответ: никогда не используйте вкладки вообще.
tab
. Если вы не можете настроить это в своем любимом редакторе, вам нужен лучший редактор.