Вкладки и пробелы - какой знак отступа подходит для всего, в любой ситуации, когда-либо? [закрыто]

84

Стандарты кодирования для кода, размещенного на drupal.org, предлагают использовать два пробела для отступа кода; другие сайты предлагают использовать вкладки для отступа кода.

Каков правильный отступ для всего и в любой ситуации? Пожалуйста, объясните ответ, который вы даете.

kiamlaluno
источник
13
IDE по умолчанию FTW - просто нажмите клавишу табуляции и посмотрите, что произойдет
user281377 14.12.10
Что бы вы ни выбрали, это должно использоваться всей командой, но не тогда, когда один использует пробелы других пробелов.
Ученик
1
Я попытался отредактировать это, чтобы исправить предположение, что табуляции / пробелы - единственный способ сделать отступ в коде. Редактирование было удалено, но, надеюсь, этот комментарий останется: вместо символов отступа, почему бы вместо этого не использовать левое поле? - это может быть полностью автоматизировано редактором, и текстовые процессоры делали это десятилетиями.
pgfearo
4
Я действительно не думаю, что здесь должен быть «принятый» ответ. Тот факт, что ответ с меньшим количеством голосов на самом деле является первым, свидетельствует о том, почему спрашивающий должен получить особую силу (то есть возможность поставить свой любимый ответ первым) только потому, что он задал вопрос?
Дин Хардинг

Ответы:

129

пространства

В зависимости от вашей среды вкладка может содержать разное количество столбцов, но пробел всегда равен одному столбцу.

С точки зрения того, сколько пробелов (или табуляций) составляет отступ, более важно быть согласованным во всем коде, чем использовать какое-либо конкретное значение табуляции.

user8
источник
42
Ваш второй абзац неверен; ответ 4!
Дениф
5
@Daenyth - возможно, если вы используете язык фигурных скобок. Большинство Паскаль / Delphi использует 2.
Джерри
72
Почему я должен быть обязателен к вашим 2 или 4 ПРОСТРАНСТВАМ отступа, когда табуляция может быть динамически установлена ​​и указывать один уровень отступа?
Jé Queue
3
@MGOwen Аргумент времени загрузки для кодирования веб-сайта в настоящее время легко разрешается с помощью минимизации исходного кода на css / javascript и удаления пробелов в HTML. Смотрите mod_pagespeed, чтобы понять, что я имею в виду.
Эван Плейс
42
«На вкладке может быть разное количество столбцов в зависимости от среды». Да, это именно то преимущество. Каждый может настроить его на свой вкус и быть счастливым.
Андреа
249

Вкладки

Теперь, конечно, последовательность важнее, чем любая другая, и хорошая IDE делает различия незначительными. Тем не менее, смысл этой темы в том, чтобы быть священной войной, поэтому:

Я предпочитаю вкладки:

  • Это персонаж, специально предназначенный для отступов
  • Они позволяют разработчикам с разными предпочтениями в размере отступа изменять внешний вид кода без изменения кода (разделение данных и представление для пресловутой победы!)
  • Невозможно наполовину сделать отступ с помощью вкладок. Поэтому, когда вы копируете код с какого-либо веб-сайта, который использовал 3 пробела, в файл с отступом в 4 пробела, вам не нужно иметь дело с перекосом.
Fishtoaster
источник
12
Как насчет копирования этого кода с отступом в 3 пробела в файл с отступом табуляции, для которого вы установили вкладки с 3 пробелами? Когда вы отправляете свой код своим соотечественникам, они удивляются, почему у этой функции такой плохой отступ!
Уэйн Вернер
27
Вкладки изначально не предназначены для отступов, они предназначены для табулирования и выполняют ужасную работу ...
Тимви,
14
@Timwi: Википедия, кажется, говорит, что они предназначены для перемещения курсора к следующему из набора фиксированных столбцов. Не похоже, что табулирование было основной функцией. Кроме того, я имел в виду эпоху пост-пишущей машинки.
Fishtoaster
40
Кроме того, многие программисты тратят значительное количество времени на написание html, css и т. Д., Поскольку факт, что файл с 4 пробелами вместо вкладок на 5-15% больше, действительно важен. Пример: эта страница, на которой вы сейчас находитесь, загружается как минимум на 10% медленнее, чем следовало бы, поскольку команда SE использовала пробелы . Проверьте сами.
MGOwen
23
Еще одно преимущество этого подхода - меньшее количество нажатий клавиш при использовании клавиш со стрелками для навигации влево-вправо.
Николь
117

Используйте вкладки, чтобы сделать отступ в начале строки, по одной вкладке на уровень отступа, и пусть каждый выбирает, какой ширины они хотят.

Используйте пробелы, если вы располагаете символы внутри строки, чтобы они всегда выстраивались в линию независимо от размера вкладки.

И найти и ударить всех ранних авторов программного обеспечения, которые позволили этой глупости стать проблемой в первую очередь.
(Серьезно, почему это вообще обсуждается? Далее вы скажете мне, что вы также хотите использовать несколько символов для переноса строк!)

Питер Боутон
источник
33
Да да да да да Сто процентов да. Это позволяет каждому устанавливать ширину вкладки при сохранении табличного форматирования. Если вы беспокоитесь о том, чтобы не превышать 80 столбцов (как, вероятно, и должно быть!), Просто выберите произвольный максимальный ожидаемый размер вкладок (например, 4) и оставьте поля для вкладок такой ширины. Честно говоря, это так сложно?
Джон Перди
Да, но не используйте пробелы для выравнивания внутри строки. Ваши коллеги могут использовать пропорциональный шрифт, поэтому ваши ASCII-изображения будут выглядеть странно на их экранах.
paperjam
3
Это единственный правильный ответ здесь
J.Ashworth
76

Вкладки

  • Позволять ошибкам быть более заметными , это раздражает микроуправление пробелами.
  • являются последовательными , они используются только для отступов, если вы не комментируете неправильно.
  • настраиваемые , вы можете указать в настройках редактора, насколько они широки.
  • более продуктивны , поэтому введите 4 пробела, когда вы можете нажать 1 таб.
  • взять меньший размер, чем несколько пробелов.
  • занять больше места, чем пространство.
  • займет меньше времени, чтобы пройти .
  • как правило, лучше работают в IDE.

Пробелы следует использовать там, где вкладки совершенно бесполезны.

Даже для выравнивания параметров и комментариев вкладки по-прежнему работают лучше .

оборота Том Вейсман
источник
24
Что касается «более продуктивного», лично я нажал TAB и позволил IDE выполнить преобразование для соответствующего количества вводимых пробельных символов. Возможно, что вам нужно обновить: p?
Матье М.
3
-1: более заметные ошибки: не правда; непротиворечивый: вряд ли из-за настраиваемости: да, но это также недостаток в то же время; более продуктивно: не соответствует действительности, практически все идентификаторы могут преобразовывать табуляцию в пробелы; меньший размер: да, но практично? нет; меньше времени: нет с разумной IDE; работать лучше: совсем нет, если вы используете несколько сред и инструментов
MaR
@MaR: заметные ошибки - правда, ширина вкладки больше. Также ... Питон! Вкладки согласуются, так как одна вкладка является отступом, в то время как в противном случае вам нужно определить, сколько пробелов вы будете использовать для отступа. Настройка является преимуществом. Вы используете вкладки в первую очередь, так что это более продуктивно. Кажется, ты даже не можешь дать веские доводы, почему это непрактично, ненавистники будут ненавидеть ...;)
Тамара Вийсман
@ TomWij: Как вкладка больше, чем эквивалентное количество пробелов? Python является практически единственным языком, получившим пробельные символы для безопасного использования вкладок (но все же - он дает лишь небольшое преимущество по сравнению с «вставками пробелов»). Попробуйте также другие языки, устаревшие среды, сравнения / слияния, терминалы, sccs, чтобы понять, почему вкладки все еще утопичны и "идеальны".
MaR
@MaR: Где я указал «эквивалентное количество пробелов»? Я пробовал все это, вкладки прекрасно работают в них!
Тамара Вийсман
41

Все аргументы для вкладок велики в теории. Но...

В теории практика и теория совпадают. На практике их нет.

Да, с помощью вкладок вы можете выбрать уровень отступа. И да, вы можете использовать комбинацию вкладок и пробелов для выравнивания вещей. И в идеальном мире это было бы

В действительности, вы не можете видеть разницу между пробелами и вкладками, они всегда кажутся запутанными при перемещении кода, и просмотр кода в другой программе, в которой для вкладок установлено 8 столбцов, является неприятностью.

Я использовал вкладки. Затем я начал работать в команде и делиться кодом. Я быстро стал сторонником пробелов. Так что, хотя я могу сочувствовать утопии вкладок, я не могу себе представить, не используя пробелы.

грамм .
источник
6
Вы можете получить редактор, такой как Kate, который представляет вкладки с «призрачным» символом - я легко вижу табуляции и пробелы при кодировании.
HorusKol
8
Теперь у каждого редактора есть опция «показывать пробелы», а в Visual Studio - «табифицировать»
Chris S
2
Хороший аргумент. Вот почему я отказался от попыток убедить людей, что вкладки более логичны. Кажется, даже программисты, которые должны привыкнуть к абстрактному мышлению, путают табуляции и пробелы («если это похоже на четыре пробела, то это должно быть четыре пробела!»). Для меня гвоздь в гробу заключался в том, что настроить Emacs для отступа можно только с помощью вкладок.
Мартин Вилканс
3
+1 Утопия с вкладками - это здорово, но каждый раз, когда я перемещал код между редакторами с разной шириной вкладок, код испортился и выровнялся. Слишком легко молча сделать что-то не так с вкладками.
Mankarse
Я тоже использовал вкладки, но у меня возникли проблемы с некоторыми IDE, которые не могли вставлять пробелы для строк продолжения, и я ненавидел заменять все эти автоматически вставленные вкладки пробелами (Visual Studio был одним из них). Так что я просто придерживался пробелов. Плюс пробелы позволяют вам использовать отступы половинного размера для таких вещей, как public:в объявлениях классов C ++, чтобы они выглядели красивее (особенно для вложенных классов).
SZX
31

Некоторые соответствующие мнения, которые могут представлять интерес:

Fishtoaster
источник
105
То, что ты знаменит, не делает тебя правильным.
Jé Queue
@Xepoch: ты прочитал их обоснование :)?
Матье М.
5
@Matthieu М., да, я прочитал каждый, но все еще не согласен. Я тоже не люблю оливки, но не делаю меня неправым, потому что другие делают. Я нахожу смешным, что люди не используют вкладку для отступов, но именно поэтому они называют их священными войнами CS ...
Jé Queue
2
@Xepoch: да, я полагаю, что каждый имеет право на свое мнение :) Хотя я думаю, что Гвидо указал на главную проблему: смешивание табуляции и пробелов является злом, потому что оба выглядят как «пустое пространство» для пользователя.
Матье М.
3
@Fishtoaster: Когда вы говорите, что Джоэл говорит пробелы, разве не должна быть ссылка на реальную цитату Джоэла? Ссылка просто ведет на форум JoelOnSoftware, где некоторые пользователи (скорее всего, не говорят о Джоэле) обсуждают вкладки против пробелов.
Андреас Магнуссон
23

Вкладки для победы.

Джоэл Барсотти
источник
20

Я абсолютно. ненавидеть. 4. пробелы.

Почему? Главным образом потому, что мне надоело перемещаться по коду с клавиатуры и постоянно нажимать, left left left leftчтобы пройти через один отступ. Это было рождено в ранних версиях Notepad ++ и даже обычного блокнота Windows, где не было такого понятия, как кнопка форматирования. У меня было очень много проблем, когда люди использовали только 3, когда я использовал 4 везде, среди прочего.

Другая причина заключается в том, что символ табуляции существует специально для отступа и только позднее был принят для навигации. Почему мы делаем, space space space spaceкогда простое tabбудет работать? Почему IDE должны иметь дело с 2-5 разнесенным кодом и правильно форматировать, если бы работала простая вкладка и опция предпочтения?

К сожалению, я меньшинство.

TheLQ
источник
31
Вы неэффективны при просмотре кода клавиатуры. Вы должны использовать CTRL + LEFT и CTRL + RIGHT, чтобы пропустить пробелы и токены. Так что отступ не имеет значения.
Wizard79
7
Откуда исходит это заблуждение, что «вкладки существуют специально для отступов»? Вкладки называются вкладками (табуляторами), потому что они были изобретены для табуляции, а не для отступов , и они выполняют ужасную работу в обоих случаях.
Тимви
7
@Lorenzo: Вы неэффективны при просмотре кода клавиатуры. Вы должны использовать wи b(или eи ge), чтобы пропустить пробелы и токены: P
R. Martinho Fernandes
6
Ради дьявольской адвокации: не наносите плохо отформатированный код редакторам, которые вы считаете неполноценными. Используйте вкладки.
Джон Перди
11
@Timwi: извини некро, но клавиша табуляции компьютера НЕ была изобретена для табуляции. Версия TYPEWRITER этой клавиши была, но к тому времени, когда клавиатуры развились для использования с компьютерами, клавиша табуляции использовалась для отступа, а не табуляции, а термин «табуляция» стал синонимом отступа. Вкладки для КОМПЬЮТЕРОВ имеют отступ, и только по условию имя клавиши совпадает с именем пишущей машинки. Ваш аргумент сродни утверждению, что клавиша возврата компьютера была предназначена для начала новой строки и перемещения курсора в
крайнее
12

Мне лично нравится использовать вкладки во всем, так как каждый разработчик может контролировать количество отступов на вкладку. Таким образом, вы получаете гибкость в отображении.

Это, как говорится, я обычно имитирую любой стиль кодирования в файле для начала (так как я трачу много времени на выполнение работ по обслуживанию).

Brandon
источник
3
Это нарушается, как только вы начинаете делать отступы для чего-либо, кроме вложения операторов. Например, если вы хотите выровнять аргументы функции в одном столбце, по одному на строку. Это возможно, смешивая табуляцию и пробелы, но очень утомительно.
Финн
2
Это совсем не утомительно, так как это означает, что вы можете вкладывать большую часть пути, а затем просто использовать пару пробелов, вместо того, чтобы вводить десятки пробелов просто для того, чтобы добраться до нужного столбца.
Джордан Рейтер
1
@finnw вы предполагаете, что все используют моноширинный шрифт - в 2012 году значительное число разработчиков использовали пропорциональный. Если у вас есть символы без пробелов слева от вашего первого аргумента, нет способа гарантировать, что аргументы в последующих строках будут выравниваться для всех.
paperjam
Вы никогда не пытались написать HAML, не так ли?
альт
2
Мне неприятно это говорить, но я не могу представить программирование шрифтом с переменной шириной. Абсолютная неправильность этого - стандарты скобок карликов, табуляции против пробелов, все ... я просто старею? (Что происходит, когда вы получаете сообщение об ошибке со строкой и номером столбца?)
lunchmeat317
10

Я не думаю, что существует такая вещь, как правильное отступление (по крайней мере, без малой войны).

Лично мне нравятся четыре пробела. Они позволяют мне читать код намного быстрее и выглядят одинаково в любом редакторе - даже в Vi.

Иосип Медведь
источник
9
vi (или, вернее, vim) - один из лучших редакторов для работы с вкладками. Помимо возможности установки ширины вкладки и автоматического расширения до пробелов (как это делает большинство редакторов), у вас также есть softtabstopопция retabи retab!команды и.
Финн
Будут ли дети действительно умирать, если мы просто скажем 4 пробела, везде, всегда, без выбора - и двинемся дальше?
MGOwen
2
Четыре пространства не выглядят одинаково везде. Сейчас все больше программистов выбирают пропорциональные шрифты в своей среде IDE для более приятного и продуктивного программирования. В этих ситуациях четыре пробела могут выглядеть довольно маленьким отступом.
paperjam
8

Пробелы, потому что когда вы выравниваете комментарии справа от кода, или списков параметров функций, или сложных многострочных выражений, или чего-то подобного, вы хотите , чтобы ваша прекрасная работа показалась подходящей для всех . Если вы используете вкладки и позволяете людям по-разному устанавливать свои вкладки, они нарушат выравнивание для всех, кроме самых простых случаев отступа кода.

Кроме того, совершенно очевидно, что все в мире должны использовать vim, что упрощает отступы, отступы и навигацию по «табуляциям» даже в файлах с пробелами.

Hobbs
источник
Это очень хорошая особенность многих редакторов - способность быстро проходить через кучи и кучи пробелов.
Кристиан Манн
18
Похоже, вы рисуете ASCII искусство, а не кодирование.
rmac
3
Я бы добавил: вкладки не должны использоваться для выравнивания. Если вы пользователь вкладок и хотите выполнить выравнивание, вы должны сначала ввести правильное количество вкладок для отступа и ТОГДА правильное количество пробелов для выравнивания. Только тогда вы увидите код в виде вкладок прямо для всех пользователей и редакторов.
MaR
6

Вкладки являются естественным и ортодоксальным выбором, так как они по определению используются для отступов.

К сожалению, вкладки реализованы неравномерно, поэтому единственное реальное решение - это 4 пробела.

Wizard79
источник
8
С каких это пор вкладки (табуляторы) используются для отступов «по определению»? По их определению они были придуманы для подведения итогов (хотя в этом они тоже занимаются ужасной работой).
Тимви
2
Технически, кнопка возврата была изобретена, чтобы переместить головку пишущей машинки к передней части строки, тогда как перемещение к следующей строке было выполнено вращением ролика. Позже клавиша возврата также автоматически выдвигает ролик. Вы не видите, что люди зацикливаются на клавише возврата / ввода. Клавиша табуляции была четко добавлена ​​на компьютеры для выполнения отступов. Это цифровой аналог табуляции, который был у меня на старой неэлектрической машинке. Можно установить упоры табуляции для перемещения ролика в любую выбранную вами позицию, практически идентичную текущей роли клавиши табуляции в отступе.
Джордан Рейтер
@JordanReiter RE: «Вы не видите, чтобы люди зацикливались на клавише возврата / ввода.»: Вы никогда не сталкивались с CR (означает перемещение головки пишущей машинки впереди линии) / LF (представляет вращение ролика на следующую строку) вопросы?
Макс Нанаси
1
Да, но это действительно проблема с ОС, а не с клавиатурой. Независимо от того, на каком компьютере вы находитесь, вы можете нажать клавишу ввода или возврата, чтобы перейти к следующей ссылке. Вы не используете один ключ для перевода строки, а другой - для возврата каретки.
Джордан Рейтер
4

Вам, очевидно, нужен комбинированный подход.

Если вы делитесь кодом с другими разработчиками, вам нужно стандартизировать, и, поскольку это невозможно (koff koff), вам нужно заставить всех делать четыре пробела.

Тогда вам нужен редактор, который достаточно умен, чтобы не быть глупым, чтобы знать, что он должен обрабатывать строку с четырьмя пробелами в начале, как с отступом. Любой современный IDE или редактор программистов может автоматически передавать код с пробелами вместо вкладок.

Дэн Рэй
источник
4

Почему никто не может реализовать это:

  • код хранится в компактном формате, выгодном для рассматриваемой системы
  • когда каждый разработчик открывает код, он форматируется именно так, как он хочет
  • когда они закончили с этим, вернемся к компактному формату

Все счастливы, так как все они видят свой «собственный» формат.

Это так сложно?

адольф чеснок
источник
2
Потому что у меня нет достаточно свободного времени, чтобы исправить все существующие редакторы и IDE, которые используют люди, и - даже если бы я это сделал - убедить всех в обновлении было бы еще труднее.
Питер Боутон
Я уверен, что они могли бы встроить его в SVN или найти какой-то другой способ не использовать конечные инструменты.
чеснок
13
Звучит как вкладки. Каждый разработчик открывает файл и получает желаемую ширину отступа.
rmac
1
Вы уже можете настроить RCS или CVS для использования indentпрограммы.
Jé Queue
3
и разумно использовать отступ, чтобы форсировать стандартизацию отступа / кода, чтобы разработчики с забавными пробелами не обвинялись / не комментировались во всех этих изменениях форматирования
Тим Виллискрофт
3

Пробелы или табуляции - что на самом деле говорит Этвуд - это выбрать одну вещь и быть последовательным в своем проекте Единственный святой Грааль форматирования кода - убедиться, что он соответствует, чтобы психопат, который поддерживает ваш код после вас, не чувствовал себя вынужденным навсегда исправить ситуацию.

Тем не менее, если вы работаете в Python или любом другом языке, где пробел является реальной конструкцией программирования, я не могу представить себе использование вкладок.

Ной Гудрич
источник
4
Я использую вкладки. Я не знаю, занимался ли ты программированием на Python, но важен относительный отступ. Если строка 1 имеет х отступов, а строка 2 имеет х + 1 отступов, это считается большим количеством отступов. Отступы могут быть двойными пробелами, 4 пробелами, табуляцией, не имеет значения, если вы последовательны.
Мача
@Macha - Спасибо за отзыв. Я никогда не занимался разработкой на Python, но мои, кто все сказал мне, что они используют пробелы, так что интересно встретить кого-то, кто использует вкладки.
Ной Гудрич
3
Я использую вкладки с Python на работе. Это ужасно.
rhettg
3

Я парень с 4 пробелами, вкладки просто не последовательны.

Вальтер
источник
5
Как они "не согласованы"? Они всегда представляют собой один символ, представляющий один уровень отступа. Это само определение последовательной схемы отступов. (И то, что вы можете лично, не влияя ни на кого, визуально визуализировать, что любой выбранный вами способ является плюсом .)
Легкость гонок с Моникой
3

Очевидно, вкладки портят что-то в Delphi, поэтому я не использую вкладки в Delphi.

Однако я делаю все остальное с помощью Emacs и всегда использую вкладки, потому что мои вкладки идут именно туда, куда я хочу, чтобы они шли.

Питер Тернер
источник
Можете ли вы привести пример этого? Мне, честно говоря, любопытно, потому что я пользуюсь Delphi 15 лет и никогда не видел этого.
GrandmasterB
1
edn.embarcadero.com/article/10280#4.3 Это просто руководство по стилю, но у нас были странные ошибки, которые я не могу объяснить из-за вкладок. Это также может быть связано с Visual Source Safe. Я не могу это объяснить, это просто часть знаний нашей компании.
Питер Тернер
1
Проблема в том, что установки по умолчанию (по крайней мере) для некоторых версий Delphi не соответствуют обычным идиомам Delphi. Таким образом, вы в конечном итоге с кодом, который имеет ОБА.
Джерри
3

Ответ заключается в том, что не может быть единого правильного символа отступа для каждой ситуации. Форматирование с использованием символов негибко и может вызвать конфликт, когда в команде используются разные стили.

Единственный способ безошибочно и гибко форматировать код с использованием различных стилей форматирования - это делать это виртуально, то есть без символов отступа. Единственный известный мне редактор кода, который поддерживает это, - это тот, который используется в приведенном ниже примере:

Для демонстрации виртуального форматирования , ниже скриншот из XSLT редактора * , который использует этот метод вдавливания (есть также короткое видео здесь ). Каждый символ в XSLT выделен желтым цветом, для наглядности, чтобы четко видеть только символы табуляции или пробела в контенте. Отступ кода обрабатывается системой визуализации редактора, регулирующей левое поле (которое имеет белый фон).

введите описание изображения здесь

Единственные начальные пробельные символы предшествуют строкам Книги , поскольку это буквальное текстовое содержимое, а не код, эти пробельные символы должны быть сохранены.

С помощью виртуального форматирования вы выбираете ширину отступа в соответствии с окружением и стилем отступа, не затрагивая символы в исходном файле. Вы можете даже установить ширину отступа в 0, если вам нужно плоское представление кода, как показано ниже:

введите описание изображения здесь

Чтобы противопоставить это форматированию пробелов, тот же XSLT, открытый в редакторе без виртуального форматирования, преобразуется автоформатером этого редактора в следующее:

введите описание изображения здесь

Большие пустые желтые блоки на скриншоте выше ясно показывают символы пробела, добавленные форматером обычного редактора. К сожалению, теперь их невозможно отличить от реального контента, поэтому XSLT придется изменить, чтобы исправить эту проблему.

Резюме

XSLT, возможно, является крайним случаем, но этот принцип применим ко многим языкам программирования: символы должны использоваться для содержимого, а для форматирования следует искать альтернативный метод.

** Раскрытие: редактор XSLT с виртуальным форматированием был разработан моей собственной компанией *

оборота pgfearo
источник
1
К сожалению, вы, вероятно, на 50 лет опережаете свое время. Откровенно абсурдная идея о том, что программы представляют собой последовательности символов, все еще очень глубоко укоренилась в сознании большинства программистов.
Том Андерсон
3

До сих пор не упоминалось: существуют языки (Python, Haskell), где отступы имеют значение. Но 1 символ считается как 1 символ, будь то пробел или табуляция, поэтому отступ, видимый компилятором, может отличаться от того, который вы видите на экране, если используете вкладки.

Поэтому в таких языках, как Haskell, пробелы обязательны. В Makefiles TABS является обязательным. Во всем остальном это вопрос личного вкуса, и в настоящее время это не так уж и много - у каждого достойного редактора есть команда «(ведущие) табуляции к пробелам» и «(ведущие) пробелов к табуляциям».

Ingo
источник
2

Раньше я использовал пробелы, но в последнее время я использую вкладки исключительно потому, что это было то, что было установлено в Eclipse, когда я наконец заметил. Все остальные разработчики в моей команде используют Eclipse, поэтому имело смысл стандартизировать вкладки, когда мы поняли, что мы уже использовали их целую вечность, и не было причин беспокоиться о переходе на пробелы. Я был удивлен тем, насколько это было не проблема.

Установка отображаемого размера вкладки в 3 или 5 символов в вашей среде IDE значительно упрощает различие между фрагментами кода, которые имеют отступы (почти всегда 4 в настоящее время), и разделами, которые имеют отступ табуляции.

Shabbyrobe
источник
1

Много аргументов уже было дано, но никто не упомянул, куда мы можем пойти в будущем .

Вкладки ни пробелы!

В идеале код должен рассматриваться как данные, а не храниться в каком-либо конкретном текстовом формате. Любой разработчик может применить свой предпочтительный вид. Кроме того, это представление не должно ограничиваться только текстом , оно может включать таблицы, палитры цветов и математические формулы.

Эта идея не слишком надуманна. Именно редактор языкового программирования JetBrain Meta Programming System (MPS) впервые заставил меня осознать, что это решает всю дискуссию, одновременно добавляя множество дополнительных возможностей. (Да, это возможно с помощью плагинов редактора, но работа с текстом напрямую добавляет столько ненужных сложностей, в отличие от подхода, который использует MPS.)

В отличие от табуляции и пробелов, есть несколько недостатков, которые можно упомянуть, работая непосредственно с абстрактными синтаксическими деревьями . Все, что нужно, - это чтобы технология превратилась в коммерчески жизнеспособный продукт. Первые признаки этого появляются. Созданный на основе MPS, коммерческого редактора ActionScript, был создан Realaxy .

Мне бы очень хотелось, чтобы один из крупных игроков запрыгнул на концепцию этой технологии и увидел, что получится!

Стивен Джеурис
источник
0

Ни лучше, ни хуже. Единственная важная вещь, чтобы быть последовательным.

Если вы одна команда, выбирайте то, что вам нравится. Подумайте, какое поведение по умолчанию у вашего любимого редактора, но выберите то, что вам нравится.

Если вы в команде, делайте то, что делает команда. Период.

В своих различных работах я использовал два пробела, четыре пробела, восемь пробелов, табуляции, пробелы и табуляции, я думаю, что, возможно, я также использовал один пробел. Я говорю своему редактору, что делать, тогда я больше не думаю об этом, редактор прорабатывает детали.

Единственное, что нужно, это убедиться, что вы выбрали умный редактор. Emacs или vi? Теперь это священная война , я готов бороться :-)

Брайан Оукли
источник