Может быть, я один в этом, но мало что раздражает меня, как людей, использующих отступы, а не табуляции. Как печатать SpaceSpaceSpaceSpaceлегче и интуитивно понятнее, чем печатать Tab? Конечно, ширина табуляции является переменной, но она гораздо более показательна для отступа, чем для пробелов. То же самое относится и к возврату; Backspace один или четыре раза?
Почему языки, такие как Python, рекомендуют использовать пробелы над вкладками?
indentation
Нафтули Кей
источник
источник
tab
. Если вы не можете настроить это в своем любимом редакторе, вам нужен лучший редактор.Ответы:
Согласованность, в первую очередь.
Кроме того, иногда появляется что-то, что на самом деле использует пробельные символы - например, Python: Скажите, что произойдет, если я выполню следующий фрагмент кода?
Кроме того, есть разочаровывающие случаи, когда один редактор разработчика имеет вкладки с 8 пробелами, а другой - с 4, а кто-то использует 5 по какой-то странной причине ... Это может выглядеть совершенно нормально на одной рабочей станции, но затем, когда он регистрируется в SVN и кто-то еще обновятся, они увидят ужасный, ужасный беспорядок.
Так что это две действительно веские причины всегда быть последовательными, будь то пробелы или табуляции.
Но пробелы обеспечивают намного больший контроль над отступом, чем вкладки, и не требуют специальной настройки в редакторах для его работы. (Хотя это можно сделать проще - например, в vim, просто используйте
set expandtab
для вставки пробелов всякий раз, когда вы нажимаете вкладку)РЕДАКТИРОВАТЬ: И довольно забавно, сайт, кажется, нормализовал мои вкладки в пробелы, чтобы браузер мог отображать его правильно. Нажмите «изменить», чтобы просмотреть оригинал, вкладки включены;)
источник
Это хорошее обсуждение отступов и пробелов в Python; из статьи:
Что касается вашего аргумента о нажатии клавиши пробела или клавиши Backspace 2 или более раз, так как большинство редакторов исходного кода вставляют настраиваемое количество пробелов одним нажатием клавиши табуляции и, аналогично, отменяют отступ, больше не нажимаются клавиши, когда используя пробелы для отступа.
Для себя я предпочитаю пробелы, потому что код всегда отображается с одинаковым количеством отступов, независимо от того, просматриваю ли я его в IDE или в
less
блокноте; то есть пространства более переносимы.источник
В Python отступы контролируют ход программы и поэтому жизненно необходимы.
Если вы возьмете код, отформатированный с помощью вкладок, и скопируете его, чтобы вкладки были изменены или потеряны, структура кода будет разрушена. Пробелы всегда пробелы = гораздо безопаснее.
Если вас беспокоит износ пробела, ваш редактор может быть настроен на автоматическое преобразование табуляции в пробелы.
источник
.vimrc
для меня :)set softtabstop=4
, и TAB, и BACKSPACE будут использовать 4 пробела в качестве вкладки. (Ну, для каждой табуляции, рассматривая ширину как 4 пробела)Всегда следует использовать пробелы, потому что одни вкладки недостаточно гибки для многих стилей, а смешивание вкладок и пробелов (почти) всегда приводит к абсолютному беспорядку.
Для примера одного стиля, который обычно требует пробелов, рассмотрим что-то вроде:
Если вы не хотите переименовать все свои функции, чтобы они были точным кратным размеру вкладок (минус одна для скобок), то сами по себе просто не будут этого делать.
Что касается смешивания вкладок и пробелов, вы почти сразу же столкнетесь с серьезной проблемой: вкладки не всегда одинаково расширяются. Некоторое программное обеспечение обрабатывает вкладку как эквивалентное определенному количеству пробелов. Другое программное обеспечение будет расширять вкладку по модулю определенного количества пробелов - например, элемент после вкладки всегда будет начинаться с номера столбца, кратного (скажем) 8.
Даже если вы можете предотвратить смешивание пробелов с вашими вкладками, у вас все еще есть проблема: вкладки также плохо работают со шрифтами переменной ширины. Эта проблема возникает, когда (например) вы хотите выровнять завершающие комментарии:
Поскольку они стоят прямо сейчас, все они выстраиваются идеально. Однако при просмотре шрифтом переменной ширины все становится ужасно. С пробелами комментарии могут (часто будут) слегка выровняться. Однако с вкладками смещение часто становится довольно радикальным:
Внезапно небольшая разница в ширине между 'i' и 'm' или 'x' в нашем шрифте переменной ширины была увеличена до полной табуляции.
Суть в том, что почти любое изменение в том, как вы просматриваете код с помощью вкладок, независимо от того, насколько это, казалось бы, тривиально, может и обычно приводит к нечитаемому беспорядку.
Чтобы ответить на ваши другие вопросы: другие уже указали на это, но я не могу представить, чтобы кто-либо в программном редакторе (или многое другое) фактически использовал пробел для вставки пробелов, поэтому ваш вопрос о «наборе текста spacespacespacespace» не имеет значения, потому что никто так не делает. Аналогично с обратным интервалом: трудно представить редактор, который потребовал бы нажатия BkSpcчетыре раза, чтобы перейти к предыдущей позиции табуляции, поэтому (опять же) вопрос не имеет значения.
Итог: с вкладками все в порядке, если вы (и только вы) когда-либо просматриваете свой код, и вы делаете это только с помощью одного редактора, который никогда не перенастраивается (вообще!). Однако эти условия настолько близки к невозможному Убедитесь, что есть только один разумный ответ: никогда не используйте вкладки вообще.
источник
Большая проблема заключается в несогласованности ширины «табуляции», иногда они отображаются как четыре пробела, иногда восемь. Во многих редакторах вы можете установить их от 1 до 9 пробелов.
Так что это превращает простой редактор WYSWYG в то, что вы видите, это то, что может получить кто-то другой.
Это особая проблема для Python, но это также проблема в любом из языков "фигурных скобок", поскольку отступы используются для передачи значения читателям, а испорченные вкладки затрудняют чтение кода.
источник