Насколько я могу судить, вот плюсы и минусы табуляции против пробелов.
Плюсы вкладок:
- Меньше нажатий клавиш требуется для отступа, отступа и прохождения отступа. (Даже если у вашей IDE есть некоторый ум с отступом в пространстве, он никогда не будет так хорош, как табуляция.)
- Различные программисты могут использовать разные размеры вкладок по своему усмотрению.
- У вас никогда не будет курсора "внутри" символа отступа. Например, предположим, что вы копируете некоторые строки, со вкладками вы можете неопределенно щелкнуть рядом с началом строки, чтобы начать свой выбор, и вы получите все первые вкладки. С пробелами вы можете пропустить первый пробел, если не попадете в крошечную цель между ним и полем. Точно так же, чтобы удалить отступ из строки, большинство редакторов не справляются с нажатой клавишей Backspace, если курсор находится в середине символа отступа в четыре пробела. Это обычно удалит один пробел. С вкладками работает как положено.
- Согласованность с другими языками, поэтому вам не нужно настраивать ваш редактор для использования, например вкладки для C ++ / Java и пробелы для Python.
- Неправильные отступы могут быть более очевидными (то есть дополнительная вкладка намного больше, чем дополнительный пробел).
Минусы вкладок:
- Большинство программистов на Python используют пробелы, поэтому вы будете идти против соглашения.
- Использование пробелов для выравнивания многострочных операторов проще, чем использование вкладок. Вы могли бы использовать табуляцию для отступа, пробелы для выравнивания, но в Python это кажется немного рискованным!
Есть некоторые проблемы, которые некоторые люди игнорируют:
Вы можете получить пустые места в отступе с вкладками, что испортит ситуацию: практически все IDE / редакторы поддерживают визуализацию пробелов, и почти так же вероятно, что вы получите случайные вкладки в отступах пространства! Я не вижу, что это обычная ошибка в любом случае. Кроме того, большинство ошибок отступов будут обнаружены Python, и хорошие IDE должны иметь возможность выделять различные отступы.
Вы не можете легко выровнять вещи с помощью вкладок: это верно, если вы собираетесь добиться идеального выравнивания символов, но PEP-8 рекомендует против этого, а Python плохо работает с многострочными операторами в любом случае.
Люди имеют разные настройки размера отображения вкладок в своих редакторах, поэтому ваш код будет выглядеть по-разному в разных местах: Да, это действительно полезная функция вкладок.
Я начал использовать пробелы для совместимости с другим кодом Python, но, честно говоря, это достаточно разочаровывает, что я, вероятно, вернусь к вкладкам. Многое зависит от возможностей вашей IDE, но, по моему опыту, никакая поддержка IDE для отступов в пространстве не так хороша, как просто использование вкладок.
Так что, если вам действительно не нравится несовместимость с большинством (предположительно не всеми!) Кодом Python, используйте вкладки и включите визуализацию пробелов и подсветку отступов (если доступно) , Самая главная причина для меня - это легкость выбора и (довольно значительное ИМО) уменьшение количества нажатий клавиш. Некоторые соглашения глупы.
Обновление : Я обнаружил, что во всем мире существует один редактор (исключая бессмыслицу, такой как Vim), который должным образом поддерживает пробелы как отступы: Atom. У него есть опция под названием «атомарные табуляции», которая заставляет 4 пробела вести себя так, как будто это вкладка во всех отношениях (кроме возможности изменить ее размер). К сожалению, Atom довольно медленный и раздутый редактор, но это отличная возможность, и если вы вынуждены использовать пробелы, это может быть хорошим вариантом. Надеюсь, однажды другие редакторы начнут поддерживать его. Вот проблема для VSCode .