LINUX.ORG.RU

Tabs vs. Spaces

 , ,


1

2

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

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

  1. Tabs 537 (42%)

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

  2. Spaces 457 (35%)

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

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

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

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

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

Создайте себе проблемы, а потом героически их решите — ОК!

Как по мне, проблем больше от табуляции, чем от пробелов

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

Скажем, в емаксе такое делается парой строчек в конфиге...

c0smonaut
()

Пишу на Java.

Таб = 8 пробелов Отступ = 4 пробела

Это — стандарт.

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

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

Как по мне, проблем больше от табуляции, чем от пробелов

Например?

Скажем, в емаксе такое делается парой строчек в конфиге...

У него тоже развиты телепатические способности?

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

не СИ-подобный синтаксис

Почему у питона должен быть «СИ-подобный синтаксис»?

давай ещё на ASM кусок кода в пример приведи

Вот когда будем ASM обсуждать, тогда и приведу ;)

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

а это ты не мне напиши, а тому кто запостил кусок питона и на понт берёт,
типа каким таким хоткеем можно ЭТО привести к красивому виду с отступами?

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

типа каким таким хоткеем можно ЭТО привести к красивому виду с отступами?

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

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

Миллионы пользователей вима и нотпада не могут ошибаться.

fmap
()

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

DELIRIUM ☆☆☆☆☆
()

tab c автозаменой на spaces. Потому, что я думаю о других, которые будут читать мой код и у которых tab будет равен не 4, а 2 пробелам. Так листинг не превращается в кучу букавок, а выглядит так же красиво как и у меня.

fang90 ★★★★★
()
Последнее исправление: fang90 (всего исправлений: 1)
Ответ на: комментарий от Aceler

Например?

Разная ширина табов у разных людей

У него тоже развиты телепатические способности?

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

c0smonaut
()

Тред-детектор неосиляторов человеческих IDE.

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

Разная ширина табов у разных людей

Вообще-то оно ради этого и задумано. Причём ширину табов можно менять на лету. Видимо, это очень сложно для вас.

С помощью регекспов и кейбиндингов.

Для каждого языка свой регексп? Ну ладно, я понимаю для C или XML, но как ты себе представляешь такой регексп для python? Или для bash? А если твоя IDE не знает языка — всё, писать нельзя?

А главное — теперь у тебя IDE по нажатию кнопки tab вставляет четыре пробела, а по нажатию на backspace стирает четыре пробела. Т.е. твоя IDE имитирует табы путём сложного механизма регэкспов, не получая никаких преимуществ, а получая кучу проблем из-за фиксированных табов.

Зачем?

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

vim мне по умолчанию заменял пробелы на табы втихаря

вот у тебя пробелы и вылезли.

А ещё неплохо бы читать, на что отвечаешь.

я читал. Для тех кто в танке: это не баг, а фича, vim меняет пробелы/табы так, как оно принято в данн6ом проекте. Т.е. если в файле 0x20 0x20 0x20 0x20, тогда vim при наборе кода, подставит в новой строке 0x20 0x20 0x20 0x20, если нужен отступ по синтаксису (например если ты написал if(x)ENTER)

Ну а если там 0x09, то vim и пихает 0x09.

И только в интернете 0x09 меняют на что-то html'ное. Что vim воспринимает как пробел. А как ему ещё воспринимать  ?

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

Так может это проблемы этого самого м*а, а не проблемы табов?

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

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

vim? emacs? pycharm? wing? да любой, кроме notepad.exe и подобных

Ответ неправильный! Ибо ни в одном из этих IDE/редакторов телепатия не предусмотрена.

тут телепатия и не нужна. Если ты ставишь <таб><таб><пробел*42>, то разве редактору/IDE сложно подставить такое за тебя?. Да, в первый раз ЭТО придётся ручками набрать.

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

зато есть команда автоформатирования выделил весь файл, жмакнул хоткей - вуаля, всё красиво

афигеть — сигнатура летит к чертям, и теперь это не оригинальный файл, а хрен знает что и хрен знает откуда.

Сразу видно «программиста», у которого 1 проект из одного файла, из 100 строк.

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

вот vim так сделал (сам, я этот код скопипастил из тволего поста)

if TDB:
·   if init and not init == «0»:
·   ·   ed = TDB.EDINIC.find({«parent»: ObjectId(init)})
·   ·   if ed.count() == 0: ed = TDB.EDINIC.find({«_id»: >ObjectId(init)})
·   ·   elif init == «0»:
·   ·   ·   ed = []
·   ·   ·   self.addItem(GT(u"Безразмерная величина"))
·   ·   ·   self.setItemData(0, «0», 1)
·   ·   else:
·   ·   ·   ed = TDB.EDINIC.find({«parent»: None})
·   ·   ·   self.addItem(GT(u"Безразмерная величина"))
·   ·   ·   self.setItemData(0, «0», 1)
·   ·   ·   for i, x in enumerate(ed):
·   ·   ·   ·   i += 1
·   ·   ·   ·   self.addItem(x.get(«title»)[«ru»])
·   ·   ·   ·   self.setItemData(i, str(x.get(«_id»)), 1)
Вот этот символ · имеет код 0x09

пруф

$ hexdump -C t1.py 
00000000  69 66 20 54 44 42 3a 0a  09 69 66 20 69 6e 69 74  |if TDB:..if init|
00000010  20 61 6e 64 20 6e 6f 74  20 69 6e 69 74 20 3d 3d  | and not init ==|
00000020  20 c2 ab 30 c2 bb 3a 0a  09 09 65 64 20 3d 20 54  | ..0..:...ed = T|
00000030  44 42 2e 45 44 49 4e 49  43 2e 66 69 6e 64 28 7b  |DB.EDINIC.find({|
00000040  c2 ab 70 61 72 65 6e 74  c2 bb 3a 20 4f 62 6a 65  |..parent..: Obje|
00000050  63 74 49 64 28 69 6e 69  74 29 7d 29 0a 09 09 69  |ctId(init)})...i|
00000060  66 20 65 64 2e 63 6f 75  6e 74 28 29 20 3d 3d 20  |f ed.count() == |
00000070  30 3a 20 65 64 20 3d 20  54 44 42 2e 45 44 49 4e  |0: ed = TDB.EDIN|
00000080  49 43 2e 66 69 6e 64 28  7b c2 ab 5f 69 64 c2 bb  |IC.find({.._id..|
00000090  3a 20 3e 4f 62 6a 65 63  74 49 64 28 69 6e 69 74  |: >ObjectId(init|
000000a0  29 7d 29 0a 09 09 65 6c  69 66 20 69 6e 69 74 20  |)})...elif init |
000000b0  3d 3d 20 c2 ab 30 c2 bb  3a 0a 09 09 09 65 64 20  |== ..0..:....ed |

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

Ага, и при коммите в CVS будет Ад и Израиль.

не позорься, диванный теоретик.

Эту проблему никто не придумывал: сколько-бы ты не носился-бы со своим единственно правильным мнением(и мне нас рать с каким), всегда найдётся чудак/ч/м/, который с тобой несогласен, и также упорот как ты. Ты не любишь пробелы? На а кто-то ненавидит табы. Смирись с этим, если ты конечно хочешь работать не в одиночку.

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

Как по мне, проблем больше от табуляции, чем от пробелов

а по мне — проблема в чудаках/ч/м/

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

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

каким таким хоткеем можно ЭТО привести к красивому виду с отступами?

ctrl+shift+v в xfce4-terminal пробовал? У меня — вставляет...

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

Для каждого языка свой регексп? Ну ладно, я понимаю для C или XML, но как ты себе представляешь такой регексп для python?

показать?

А если твоя IDE не знает языка — всё, писать нельзя?

можно. Только форматировать придётся ручками. А разве существуют ЯП, для которых нет отступов в vim? Можно пример?

А главное — теперь у тебя IDE по нажатию кнопки tab вставляет четыре пробела, а по нажатию на backspace стирает четыре пробела. Т.е. твоя IDE имитирует табы путём сложного механизма регэкспов, не получая никаких преимуществ, а получая кучу проблем из-за фиксированных табов. Зачем?

ему так нравится. Каждый сходит с ума по своему.

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

афигеть — сигнатура летит к чертям, и теперь это не оригинальный файл, а хрен знает что и хрен знает откуда.

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

Сразу видно «программиста», у которого 1 проект из одного файла, из 100 строк.

сразу видно диванного аналитика который судит о людях по одной строчеке на ЛОРе

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

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

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

Я это всё к тому веду, что спор в принципе бессмысленный. Какая нафиг разница, табы или пробелы? Что хотите, то и ставьте. Давайте ещё откроем топик мужчины VS женщины, голосование, не?

сразу видно диванного аналитика который судит о людях по одной строчеке на ЛОРе

чужой код лучше не форматировать, иначе он станет твоим...

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

vim меняет пробелы/табы так, как оно принято в данн6ом проекте.

Чушь. Vim меняет пробелы/табы так, как написано в настройках.

И только в интернете 0x09 меняют на что-то html'ное.

Vim не лезет в интернет при нажатии на enter.

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

А разве существуют ЯП, для которых нет отступов в vim? Можно пример?

Любое узкоспециализированное непонятно что.

ему так нравится. Каждый сходит с ума по своему.

Стоя и в гамаке, я не это и намекал.

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

Проблема не в синтаксисе. Проблема в редакторе. Vim например жрёт и питоносинтаксис, если надо.
вот vim так сделал (сам, я этот код скопипастил из тволего поста)

Хреново он его жрёт ;) Правильный ответ:

if TDB:
    if init and not init == "0":
        ed = TDB.EDINIC.find({"parent": ObjectId(init)})
        if ed.count() == 0: ed = TDB.EDINIC.find({"_id": ObjectId(init)})
    elif init == "0":
        ed = []
        self.addItem(GT(u"Безразмерная величина"))
        self.setItemData(0, "0", 1)
    else:
        ed = TDB.EDINIC.find({"parent": None})
        self.addItem(GT(u"Безразмерная величина"))
        self.setItemData(0, "0", 1)
    for i, x in enumerate(ed):
        i += 1
        self.addItem(x.get("title")["ru"])
        self.setItemData(i, str(x.get("_id")), 1)
Rodegast ★★★★★
()
Последнее исправление: Rodegast (всего исправлений: 2)
Ответ на: комментарий от Aceler

Чушь. Vim меняет пробелы/табы так, как написано в настройках.

диванные теоретики на марше: создай файл с пробелами и файл с табами. И вставь туда новую строчку. Увидишь, что vim сам догадается, пробелы/табы (если это не питон конечно). Я же говорю, vim понимает даже таб,таб,пробелы и «половинный пробел», это когда иногда ставят <TAB>, а иногда «полтаба», два пробела.

Vim не лезет в интернет при нажатии на enter.

да. Это ТЫ лезешь на всякие говносайты, и копипастишь оттуда всякий говнокод.

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

Vim например жрёт и питоносинтаксис, если надо.

знаю, вим вообще жрёт всё что угодно если надо

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

А разве существуют ЯП, для которых нет отступов в vim? Можно пример?

Любое узкоспециализированное непонятно что.

ты его хоть раз видел? А ты посмотри. Там 146% гарантии, что какой-то широко известный формат. C-подобный например.

Стоя и в гамаке, я не это и намекал.

дык а тебя-то то что?

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

чужой код лучше не форматировать, иначе он станет твоим...

но если в твоём проекте стандарты форматирования не такие как в коде который заимствуешь...
ну со временем же будет каша и ересь

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

И вставь туда новую строчку. Увидишь, что vim сам догадается, пробелы/табы (если это не питон конечно).

Вот именно этого он и не сделал в моём случае.

И это был питон, конечно, а ты не умеешь читать.

да. Это ТЫ лезешь на всякие говносайты, и копипастишь оттуда всякий говнокод.

Нет. Это ты не умеешь читать и поэтому пишешь чушь какую-то.

Aceler ★★★★★
()
Ответ на: Слив засчитывать? от Camel

Вот есть у тебя блок кода с двумя-тремя уровнями вложенности, а рядом с ним в комментариях ascii-артом что-то пояснительное нарисовано, схема какая-нибудь. Дальше сам додумаешь?

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

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

Обладатель немоноширинных шрифтов заплачут горючими слезами, а табы/пробелы тут причём?

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

но если в твоём проекте стандарты форматирования не такие как в коде который заимствуешь... ну со временем же будет каша и ересь

вот что-бы каши и ереси не было, чужой код и НЕ НУЖНО форматировать по своим правилам. Надо СВОЙ код форматировать так, как это принято в ЭТОМ проекте.

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

Дальше сам подумаешь?

Вот есть у тебя блок кода с двумя-тремя уровнями вложенности, а рядом с ним в комментариях ascii-артом что-то пояснительное нарисовано, схема какая-нибудь.

То что вы описываете не есть форматирование, но вёрстка.

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

Вот именно этого он и не сделал в моём случае. И это был питон, конечно, а ты не умеешь читать.

значит у тебя кривые руки, и ты что-то там накрутил в ~/.vimrc. Вот у тебя и работает не так, как у нормальных людей.

Нет. Это ты не умеешь читать и поэтому пишешь чушь какую-то.

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

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

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

Почему? О_О Если бы форматирование делалось табуляцией, то поехало бы, а отступы-то уедут все одновременно, какая разница?

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

Так верстают только...

Описанный вами стиль не может быть применён в реальном программировании, потому что редактирование такого кода сопряжено с болью от расползающегося ASCII art'а. Такой код только в учебник вставлять, но там, как раз, надо использовать вёрстку для размещения иллюстраций, а не секасом с ASCII art'ом заниматься.

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