LINUX.ORG.RU

TABs VS Spaces


0

0

Что предпочтетельно использовать? Скажем есть строчка кода, за которой необходим однострочный комментарий, начинающийся с //. Что лучше сделать? 1 таб, 2 таба или n пробелов? n=8?

И еще этот вопрос для пользователей emacs в частности. Табы(пока я их использую) ставлю через C+q TAB. Прочитал и задумался -> http://www.emacswiki.org/cgi-bin/wiki/TabsAreEvil

Как делаете вы?


м... если подразумеваются "сиськи" --- то как удобнее так и делай.

я ставлю табы(восемь пробелов).

anonymous
()
Ответ на: комментарий от anonymous

Так ТАБЫ или ПРОБЕЛЫ? Ибо первое != второму.

fukas
() автор топика

Ставлю табы (8 пробелов)

anonymous
()

я всегда делаю в настройках редактора использование только пробелов, не табов.

Например, есть люди у которых таб настроен на 4 или 2 пробела (несомтря на то, что это глупо и неправильно, и в одном из RFC явно прописано число 8) -- и если будут табы, то им они увидят мой код в некрасивом виде..

dilmah ★★★★★
()

Использую табы для отступов в начале строки. В середине строки использую только пробелы. В этом случае код будет выглядеть нормально в любом редакторе. Использование табов в начале строки позволяет настроить отступ - одному девелоперу удобнее использовать отступы в 2 пробела, другому в 4 пробела, третьему в 3 и т.д.

Но последнее время сурьёзно задумываюсь о полном отказе от табуляции, ибо проблем при чтении кода оно добавляет больше, чем удобств.

Artem_Korneev
()
Ответ на: комментарий от wfrr

м.. а 80x25 не маленький

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

ps: имхо самый хороший стиль кода придумал линус. его и придерживаюсь везде (для си)

anonymous
()
Ответ на: комментарий от anonymous

80x25... хмм а нафига так извращаться? Вроде все работают сейчас на современных мониторах, и в 80 строк шириной укладываться не обязательно при разрешении 1680x1050 ;)

fukas
() автор топика
Ответ на: комментарий от fukas

> как заставить emacs по C-q TAB делать 8 пробелов а не таб шириной в 8 пробелов?

C-q tab вставляет квотированный, безусловный таб.

Используй обычные емаксовские механизмы индентации (которые просто таб или C-j) и установи (setq-default indent-tabs-mode nil)

dilmah ★★★★★
()
Ответ на: комментарий от dilmah

> и если будут табы, то им они увидят мой код в некрасивом виде..

они увидят код в привычном для НИХ виде!

считаю, что надо ставить табы. иначе, для чего он еще придуман :)

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

а то, что кто-то ноет, что 8 пробелов на отступ - это слишком много --- отправлять в настройки их редакторов...

> имхо самый хороший стиль кода придумал линус

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

anonymous
()
Ответ на: комментарий от fukas

не у всех есть такое мониторы. у меня те самые 1680x1050, однако 80x25 очень хорошо позволяет структурировать код, забивая его на функции (не больше двух экранов текста)

anonymous
()
Ответ на: комментарий от anonymous

> они увидят код в привычном для НИХ виде!

дело в том, что таб это таки 8 символов, а вот отступ я использую 2 символа. Таким образом они увидят все в перекособаченном виде:)

dilmah ★★★★★
()
Ответ на: комментарий от anonymous

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

anonymous
()
Ответ на: комментарий от dilmah

>дело в том, что таб это таки 8 символов, а вот отступ я использую 2 символа.

настрой свой редактор, чтобы Таб==2 пробела. и тебе хорошо, и другим потом приятней менять отступ.

anonymous
()
Ответ на: комментарий от anonymous

А нам заказчик сказал никаких табов и отступ 4 пробела. Теперь у нас очень красивые исходники! :-)

yz
()
Ответ на: комментарий от yz

Настолько красивы что даже компилять не хочется.

wfrr ★★☆
()
Ответ на: комментарий от anonymous

> настрой свой редактор, чтобы Таб==2 пробела. и тебе хорошо, и другим потом приятней менять отступ.

ну смотри.  Вот код:

 $expr = reduce_expr($expr,
                     $complete_apriori,
                     $apriori_fpt,
                     $ruleset);

я (и емакс) выравнивает это не по кол-ву отступов.  Это выравнивается по скобке.  Теперь подумай, что будет если это делать табами.

dilmah ★★★★★
()
Ответ на: комментарий от dilmah

>я (и емакс) выравнивает это не по кол-ву отступов.  Это выравнивается по скобке.  Теперь подумай, что будет если это делать табами.

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

в твоем случае (это перл, да? тогда позволю себе фигурные скобки. таб выделю как <tab>):

бла-бла-бла
{
<tab>бла-бла-бла
....
<tab>бла-бла-бла
<tab>{
<tab><tab>бла-бла-бла
...
<tab><tab>$expr = reduce_expr($expr,
<tab><tab>                    $complete_apriori,
<tab><tab>                    $apriori_fpt,
<tab><tab>                    $ruleset);
<tab><tab>бла-бла-бла
...
<tab>}
...
}

тогда (опять-таки) все будут довольны!

anonymous
()
Ответ на: комментарий от anonymous

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

dilmah ★★★★★
()

> Как делаете вы?

Всегда четыре пробела. От табов больше проблем чем пользы.

Legioner ★★★★★
()

Начальные отступы - табами, внутри строки всегда пробелы. Проблем не испытываю.

anonymous
()

Начальные отступы табами, внутри строк пробелами.

Иногда приходится читать исходнки фанатов пробелов, у которых размер отступа - 8. Тогда начинаешь жалеть, что не все используют табы.

naryl ★★★★★
()
Ответ на: комментарий от naryl

> Тогда начинаешь жалеть, что не все используют табы.

а в чем жалость то? В экономии k% байт? Повесь хук чтобы unexpand(1) вызывался при открытии файла в редакторе..

dilmah ★★★★★
()

хе. а начальный вопрос-то, я так понимаю, был не в этом!)))

если надо отступить от строчки кода и сделать комментарий, то уже я юзаю один пробел. и потом еще один пробел после //

их как правило хватает для нормальной читабельности.

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

бла-бла-бла;

бла-бла();
//тра-ля-ля
//ля-ля

бла-бла-бла;

и в таком случае перед // можно было бы поставить таб, но это уже на любителя.

anonymous
()
Ответ на: комментарий от anonymous

>если надо отступить от строчки кода и сделать комментарий, то уже я юзаю один пробел. и потом еще один пробел после //

s/уже я/я уже/

и получается так:

бла-бла-бла(); // тра-ля-ля

anonymous
()
Ответ на: комментарий от anonymous

комментарий естественным образом ставится перед комментирумой строчкой. Непонятно зачем лепить их в одну строчку, тем самым резко повышая вероятность превышения 76-символьного Лимита.

dilmah ★★★★★
()

1 отступ - 4 пробела. у нас сие записано в нормативных документах даже. табы - для быдла (ц) =)

isden ★★★★★
()
Ответ на: комментарий от dilmah

>да, во всех разумных code guidelines требуют пробелы а не табы.

linux kernel coding style, gnu coding style, k&r coding style --- они неразумные. ага.

anonymous
()
Ответ на: комментарий от anonymous

{
<tab>бла-бла-бла
....
<tab>бла-бла-бла
<tab>{
<tab><tab>бла-бла-бла
...
<tab><tab>$expr = reduce_expr($expr,
<tab><tab>                    $complete_apriori,
<tab><tab>                    $apriori_fpt,
<tab><tab>                    $ruleset);
<tab><tab>бла-бла-бла
...
<tab>}
...
}

"так вот ты какой северный олень!" (c)..

всегда было любопытно посмотреть в глаза фашистам, использующим
подобную смесь табуляции и пробелов. но они всё как-то прятались
или убегали. думал уже что не доживу до этого дня. оказывается,
дожил.. :-/

// wbr

klalafuda ★☆☆
()

ИМХО за табы надо приговаривать к 10 годам расстрела вонючими пулями... Вообще, это ж надо было додуматься -- допустить в сырцы визуально неотличимые наборы символов!

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

Die-Hard ★★★★★
()
Ответ на: комментарий от fukas

> 80x25... хмм а нафига так извращаться? Вроде все работают сейчас на современных мониторах, и в 80 строк шириной укладываться не обязательно при разрешении 1680x1050 ;)

Хмм... ну что тут можно сказать, чтобы вас не обидеть? Скажем так: вы глубоко неправы.

sv75 ★★★★★
()
Ответ на: комментарий от dilmah

> да, во всех разумных code guidelines требуют пробелы а не табы.

Нет, в линуксовом требуют *табы*.

PS Он разумный.

sv75 ★★★★★
()
Ответ на: комментарий от sv75

> PS Он разумный.

соглашусь.

Но:

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

Исключение подтверждает правило..

dilmah ★★★★★
()
Ответ на: комментарий от dilmah

> Исключение подтверждает правило..

Только в головах дураков, сорри.

sv75 ★★★★★
()
Ответ на: комментарий от Die-Hard

>ИМХО за табы надо приговаривать к 10 годам расстрела вонючими пулями... Вообще, это ж надо было додуматься -- допустить в сырцы визуально неотличимые наборы символов!

Если в этом предложении поменять местами табы и пробелы, то полностью соглашусь :)

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

1) Пробелов выходит больше, чем табов (я считаю, что меня уже достаточно н@#$%^и с utf8). Этот аргумент не решает, но свои 5 копеек вносит.

2) Я считаю, что табы vs пробелы суть структураная разметка vs визуальная разметка. Поэтому пробелы вместо табов - очень плохая мысль. А вот это главный аргумент.

router ★★★★★
()
Ответ на: комментарий от router

ЗЫ. ставлю табы даже в своих скриптах на питоне, несмотря на всё уважение к ван Россуму.

ЗЗЫ. При обнаружении в системе скрипта с пробелами прогоняю его через простейшее регулярное выражение. Смерть пробелам как способу отступа кода!

router ★★★★★
()
Ответ на: комментарий от router

Tab не имеет фиксированной ширины. У меня в эклипсе таб равен четырём пробелам, в консоли восьми, в виме трём. Невозможно будет набирать программу так, чтобы она идентично выглядела во всех трёх местах. (я утрирую, у меня, конечно, таб равен 8 символам везде, но это не важно).

Legioner ★★★★★
()

сам использую табы (4 пробела), при этом форматированный текст выглядит имхо самым оптимальным образом. постоянно приходится фтыкать в исходники других проектов (в основном опенсорсных), практически во всех именно такой стиль форматирования. Вобщем... дело вкуса, но при этом нельзя быть эгоистом :) надо думать о психическом здоровье тех, кто будет смотреть твои исходники ;).

Deleted
()

Как уже сказали выше оптимальный стиль -- отступы табами в начале строки, внутри строки - пробелами. А потом пусть каждый разработчик сам настраивает _отображение_ отступов как ему привычней.

Reset ★★★★★
()

Использую табы (разные 4 пробелам).

php-coder ★★★★★
()

Я кривой код через astyle прогоняю.

anonymous
()

вы меня удивляете... что, языков кроме плюсов нет?

[ocaml]
type 'a maybe = 
    Just of 'a 
  | Nothing;;
[/ocaml]

ну и как тут табы ставить? :)

Rastafarra ★★★★
()
Ответ на: комментарий от fukas

> 80x25... хмм а нафига так извращаться?

берем печатные книжки и смотрим чего там и как. например на количество символов в строке :)

Rastafarra ★★★★
()

> Как делаете вы?

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

eugine_kosenko ★★★
()
Ответ на: комментарий от Reset

> Как уже сказали выше оптимальный стиль -- отступы табами в начале строки, внутри строки - пробелами.

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

Rastafarra ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.