LINUX.ORG.RU

Tabs vs. Spaces

 , ,


1

2

По мотивам этого треда

Tabs - только табуляция.
Spaces - пробелы или табуляция в виде 2 и более пробелов.

  1. Tabs 537 (42%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. Spaces 457 (35%)

    ********************************************************************************************************************************************************************************************************************************************************************************

  3. Пофиг 297 (23%)

    ********************************************************************************************************************************************************************************

Всего голосов: 1291

Мне пофиг. В современных IDE все само выравнивается в соответствии с заданным стилем и никаких табов или пробелов нажимать не надо.

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

no-such-file ★★★★★
()
Ответ на: комментарий от waker

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

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

Ну да, читающий откроет какой-нибудь mcedit и ему будет очень удобно читать код, расползшийся за пределы экрана из-за 8-знаковых табов.

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

Странно, но я с этим согласен.

no-such-file ★★★★★
()
Ответ на: комментарий от nikodymus

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

Обычно настраивать редактор отправляют любители пробелов, для имитации орга^W табов пробелами.

Ну да, читающий откроет какой-нибудь mcedit и ему будет очень удобно читать код, расползшийся за пределы экрана из-за 8-знаковых табов

Значит ему так удобно. Было бы неудобно — не пользовался бы. К тому же сейчас в mcedit 4-знаковые табы.

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

Зачем нажимать пробел, если нужное число пробелов поставит кнопка TAB?

Зачем имитировать таб пробелами, если можно использовать таб?

P.S. Значение слова «сарказм» тебе знакомо?

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

Насколько я знаю, бутылочное горло там совсем не в zlib.

Ты легко можешь упереться в производительность процессора сервера, используя zlib. А выигрыш по объёму будет копеечный.

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

Впрочем, это частный случай.

по твоему идиоты.

Они идиоты не потому что они идиоты, а потому что они свой креатив потом мне дают. Если они хотят стоя и в гамаке мучаться, почему я-то должен? Табы на пробелы заменяются лёгким движением руки, если им так хочется.

какие ещё есть «средства программирования», кроме написания текста в редакторе?

Написание текста в другом редакторе.

Aceler ★★★★★
()
Ответ на: комментарий от no-such-file

А зачем его двигать?

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

Вот в этом процессе как раз - при переносе блока логики в другое место с изменением уровня вложенности, например:

int main (int argc, char** argv)
{
   think (some_time);
   loot_at_the_window;
   scratch_chin;
   printf ("hello!\n");
}
int main (int argc, char** argv)
{
   for (i = 0; i < 10; i ++)
   {
      think (some_time);
      loot_at_the_window;
      scratch_chin;
      printf ("hello!\n");
   }
}

Во втором случае кусок кода сдвинут целиком, без изменений. Без табов приходится руками добавлять/удалять пробелы, в geany можно просто сделать нажать tab/shift+tab.

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

почему у такого опытного профи как ты, инструмент в заводской упаковке, только-что из магазина?

Сервер я вижу первый и последний раз в жизни.

Я ответил на твой вопрос? Третий раз за этот тред, замечу.

странно, как такой маститый профи как ты,

Маститый профи как я не видит в виме, настроенном по умолчанию, разницы между пробелом и табом. Потому что вим эту разницу не показывает.

Ну и на питоне я пишу раз в три года, да.

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

Проблемы достойные недавнего срача про top-posting и bottom-posting :)

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

Как настроишь среду/редактор, так и будет.

У меня в Visual Studio клавиша tab сдвигает код вправо на 3 пробела, shift+tab сдвигает влево на 3 пробела.

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

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

:h expandtab

waker ★★★★★
()
Ответ на: комментарий от no-such-file

А зачем его двигать?

диванные теоретики на марше... Facepalm...

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

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

т.е. у меня tab = autoindent current line with (spaces|tabs).

зы: конфиг вима, для интересующихся:

set noai cin cinkeys=0{,0},:,0#,!<Tab>,!^F cino=:0,g0

т.е., по нажатию tab или ctrl+f, либо если введен один из символов {,},# в начале строки, либо : после метки, происходит автоиндент.

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

waker ★★★★★
()
Последнее исправление: waker (всего исправлений: 2)
Ответ на: комментарий от pianolender

если двигать блок кода при помощи клавиши tab

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

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

tab с вашими настройками - это автоматическое средство поставить три пробела

Не совсем. Таб работает как и должен работать таб, только все символы табуляции заменяются на нужное количество пробелов (от 1 до 3).

Например, если начать новую строку, нажать на пробел, а затем на таб, то появятся еще 2 пробела (строка будет состоять из 3 пробелов).

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

Ты легко можешь упереться в производительность процессора сервера, используя zlib. А выигрыш по объёму будет копеечный.

если ты не знал, то zlib допускает широкий диапазон регулирования сжатия. В т.ч. даже и для совсем слабых встроенных ОЭВМ. Ты что-то путаешь. Может ты rfc195{0,1,2} не читал?

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

ты бредишь? Про \s слышал?

Они идиоты не потому что они идиоты, а потому что они свой креатив потом мне дают. Если они хотят стоя и в гамаке мучаться, почему я-то должен? Табы на пробелы заменяются лёгким движением руки, если им так хочется.

опять бред: пробелы на табы не заменяются?

Написание текста в другом редакторе.

значит у тебя плохой «другой редактор».

ЗЫЖ народ, я запутался! ЛЮБОЙ аргумент сторонников табов/пробелов можно применить против них самих. Как вы спорите-то???

emulek
()

Tabs513 (42%)

Приятно что на ЛОРе так много адекватных людей, которые понимают что все якобы проблемы табов - надуманны.

Ненавижу пробелы еще с времен ворда и бабок, привыкших «форматировать» пробелами, а потом всё ползет.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от emulek

ЗЫЖ народ, я запутался! ЛЮБОЙ аргумент сторонников табов/пробелов можно применить против них самих. Как вы спорите-то???

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

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

при переносе блока логики в другое место с изменением уровня вложенности

IDE автоматически изменяет отступы на актуальные в месте вставки куска кода.

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

в geany

Вы бы еще cat > file вспомнили.

Без табов приходится руками добавлять/удалять пробелы

Эх, бедолага. Прочитай инструкцию, что ли.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 2)
Ответ на: комментарий от Aceler

Сервер я вижу первый и последний раз в жизни. Я ответил на твой вопрос?

нет. Я не представляю, как например хирург, пальцем делает трепанацию... Какой он после этого «хирург»? Даже если пациента видит в первый и последний(вот уж точно) раз.

Маститый профи как я не видит в виме, настроенном по умолчанию, разницы между пробелом и табом. Потому что вим эту разницу не показывает.

а вот у такого новичка как я — показывает.

Ну и на питоне я пишу раз в три года, да.

я тоже. Но всё равно мой vim показывает. Для Makefile например это критично. Или юзать крутым профи make теперь не модно?

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

если ты не знал, то zlib допускает широкий диапазон регулирования сжатия.

Когда у тебя будет МНОГО одновременных подключений, сжатие лучше не производить вовсе. Отдаёшь статический контент и отдавай себе.

Никогда не задумывался, почему сжатие html используется так редко?

ты бредишь? Про \s слышал?

Заменить \s на пустое место во всём исходнике? Красава!

  <a href="www.linux.org.ru«>Hi there!</a>

Попробуй, замени :))) А вот сделаешь лёгкую замену \t на " — и никто не пострадает.

опять бред: пробелы на табы не заменяются?

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

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

нет. Я не представляю, как например хирург, пальцем делает трепанацию...

Профессор делает трахеотомию кухонным ножом. Картина маслом.

Какой он после этого «хирург»?

Есть такая специальность — медицина катастроф :-)

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

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

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

waker ★★★★★
()

IDE решает. А так пробелы, да.

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

8-знаковых табов ... если табы мешали с пробелами

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

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

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

А вот за это уже по рукам, больно. Форматирование — пробелами.

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

Вообще, аргумент «Использовать пробелы, потому что с пробелами сложнее накосячить, нарушая все мыслимые приёмы оформления кода» — оно, конечно, имеет право на существование. Это любители табов думать должны, отступ у них тут или форматирование, а пробельщики знай себе лупят пробелы…

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

Когда у тебя будет МНОГО одновременных подключений, сжатие лучше не производить вовсе. Отдаёшь статический контент и отдавай себе.

а зачем КАЖДЫЙ раз сжимать одно и то же?

Никогда не задумывался, почему сжатие html используется так редко?

наверное потому, что среди таких как ты профи, так много неосиляторов. И да, почему «редко»?

Попробуй, замени :))) А вот сделаешь лёгкую замену \t на " — и никто не пострадает.

1. я заменю. Разве ты не знал, что я владею магией sed?

2. \t может встретится и внутри кавычек. Почему нет?

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

откуда в коде это твоё «форматирование»? Ты там рисуешь что-ли? Может тебе в художники пойти, не?

Что касается гайдлайнов, то я только ЗА. Вот только мне по барабану. Табы — так табы. Кстати, в своём личном коде я всегда юзаю табы. Когда-то я тоже был молодым и упоротым фанатегом, как и ты сейчас...

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

Профессор делает трахеотомию кухонным ножом. Картина маслом.

трахеотомию надо делать ВНЕЗАПНО. С сервером, который ты впервые видишь, та же беда?

Есть такая специальность — медицина катастроф :-)

а есть «администрирование серверов в условиях катастрофы»? Интересно наверное работать, да?

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

Преимущества табов

Тут ты совсем не прав. Преимуществ стиля, использующего Tab-only для отступов можно привести с десяток и более. 1) Нет ничего более логичного, чем использовать один символ в коде для одного отступа. 2) Неделимый отступ отсекает многие проблемы, постоянно возникающие в коде с пробелами. 3) Добавить отступ - одной клавишей во всех неиспорченных редакторах. 4) Удалить отступ - одной клавишей Backspace во всех редакторах. 5) Легко добавить/удалить уровень в блоке без необходимости парсинга кода. 6) Very diff-friendly. 7) Нет надобности постоянно переформатировать код при переименованиях и прочем. 8) Структурность, всегда легко определить уровни. 9) Консистентность - одинаковые отступы везде. 10) Настройка, каждый может для себя определить визуальную длину отступа. 11) Динамическая растягиваемость. Можно временно расширить/съузить отступ для удобства представления.

И так далее. А вот преимущество у пробелов лишь одно - программисты не осилившие чёткие отступы могут писать программы в виде случайного ascii арта и он будет выглядеть похожим везде. :) Да и то в общем случае это не верно.

mihalych ★★★
()

А ничего, что в разных языках можно использовать разные? Например стандарт джавы рекомендует табы, а питона — пробелы.

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

а зачем КАЖДЫЙ раз сжимать одно и то же?

Если у тебя совсем статический контент — это хорошо, а если нет?

1. я заменю. Разве ты не знал, что я владею магией sed?

О великий магистр тёмной магии! Стоя и в гамаке, опять, да. Об этом я и говорю. А не проще сразу делать отступы табами, чтобы не пришлось применять магию?

2. \t может встретится и внутри кавычек. Почему нет?

В html? Ну… тем более его надо оттуда удалить!

откуда в коде это твоё «форматирование»?

http://www.emacswiki.org/SmartTabs

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

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

трахеотомию надо делать ВНЕЗАПНО. С сервером, который ты впервые видишь, та же беда?

Конечно. Где ты видел заказчика, который что-либо делает заранее? :)

а есть «администрирование серверов в условиях катастрофы»?

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

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

Интересно наверное работать, да?

На самом деле да. Примерно раз в месяц аврал и что-то новенькое. Куда интереснее перепечатывания инструкций :)

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

И да, готов убивать тех кто отступы пробелами ставит.

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

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

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

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

Если у тебя совсем статический контент — это хорошо, а если нет?

а если нет, то сжатие == мелочь, по сравнению с расходами на генерацию Over9000 вариантов контента в секунду.

О великий магистр тёмной магии! Стоя и в гамаке, опять, да. Об этом я и говорю. А не проще сразу делать отступы табами, чтобы не пришлось применять магию?

обычно там всё равно что-то СТРАШНОЕ, что выправляется лишь каким-то очень сильным sed-колдунством. Оно жеж как — то один фанатег поколдует, то другой...

В html? Ну… тем более его надо оттуда удалить!

ага. из <?php ... ?>, да?

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

    // Tab size: какой-то
    if(foo)
    {
        char quux[4] = 
        {
            0, 1,
            2, 3
        };
    }
emulek
()
Ответ на: комментарий от emulek

по сравнению с расходами на генерацию Over9000 вариантов контента в секунду.

Генерация контента может занимать столько же времени, сколько слабое сжатие. А может и того меньше, если там просто выборка из базы.

Это уже зависит от проекта.

что выправляется лишь каким-то очень сильным sed-колдунством.

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

ага. из <?php ... ?>, да?

Я кажется, написал слово html, мне показалось? А уж чем он генерируется — да хоть ssi.

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

вот фига ты дал! «без колдунства», но со смарттабами.

и да, zlib вправду ОЧЕНЬ мало жрёт процессора. По любому меньше, чем любая выборка из любой СУБД. Жмёт конечно не очень, но такую ерунду как форматирование выкидывает легко и напрочь. Результат с любым форматированием одинаковый. Можешь сам попробовать, если не веришь.

И да, ИМХО код должен выглядеть читаемо ВЕЗДЕ. Хоть в MSVC, хоть в cat. Потому это ваше емакерское задротство со смартабами я не юзаю. Хотя мой вим так конечно умеет делать.

emulek
()
Ответ на: Преимущества табов от mihalych

Я забыл про следующие аргументы. 12) Удобно временно нейтрализовать/возвратить строку кода, поставив в начало строки знак комментария «#» или «//» - строка не полезет вправо, ухудшая читабельность/структурность. 13) Удобство перемещения с уровня на уровень одной клавишей (стрелками вправо/влево) в любом текстовом редакторе. 14) Длина кода в байтах становится меньше, иногда значительно.

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

Если у кого-то в редакторе меньшая (большая) длина строки?

Что за длина строки, да ещё и в редакторе?

А если есть любители визуалстудии с немоноширинными шрифтами?

Бог с ними.

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

«Это неверно, это не нужно». Если читающему приспичит, сам переформатирует, благо новомодные идешечки с этим справляются.

yoghurt ★★★★★
()
Ответ на: Каша. от Camel

Вы путаете, что я путаю.

Что значит «правильно» в вашем понимании и в данном контексте? У каждого своё «правильно отформатировать», порой диктующееся принятым кодинг-стайлом. И вот как-то что в открытых проектах, что в закрытых, из тех, над которыми мне довелось поработать, табы ну совсем не котируются.

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

Что за длина строки, да ещё и в редакторе?

Волшебное число в 80 символов. Это, знаешь ли, длина строки. Табы уменьшить можно, чтобы влезло — пробелы — нет.

«Это неверно, это не нужно». Если читающему приспичит, сам переформатирует, благо новомодные идешечки с этим справляются.

Современные технологии позволяют справиться с любым форматированием исходника, кроме ascii-art, конечно.

Но, повторю вопрос, который задаю уже на протяжении шесть последних страниц — зачем стоя и в гамаке имитировать табы пробелами, если можно сразу пользоваться табами?

Aceler ★★★★★
()
Ответ на: Вы путаете, что я путаю. от yoghurt

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

Ну да, открываю я исходники ядра, а там… <trollface>

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

Волшебное число в 80 символов. Это, знаешь ли, длина строки. Табы уменьшить можно, чтобы влезло — пробелы — нет.

В 80 символов надо влезать не за счёт индентации. Если надо, конечно. Сейчас мониторы у всех широкие, хотя да, 120 символов на строку выглядят страшно.

зачем стоя и в гамаке имитировать табы пробелами, если можно сразу пользоваться табами?

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

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

Кстати, я на днях наткнулся на прекрасное в libstdc++: отступы пробелами, выравнивание - табами. Кому интересно - это в начале класса basic_string.

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

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

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