LINUX.ORG.RU
ФорумTalks

Пробелы вместо табов (да не бомбит у меня!)

 , , ,


0

2

Объясните, что за шиза с дефолтными настройками?

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

Возникают вопрос, чем думали принимающие решение, что это хорошая идея; и желание отправить их за это в дурку.

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

class …
→function …
→→varName = functionName( argOne,
→→••••••••••••••••••••••• argTwo
…
// или
class …
→function …
→→varName = functionName(
→→→argOne,
→→→argTwo
…

И оно никогда ни у кого не поплывёт. Кому широкий, кому узкий отступ нравится — фиолетово. Все увидят как им приятнее ровно то, что я задумал написать.

А тех, кто делает вот так:

class …
→function …
→→varName = functionName( argTwo,
→→→→→→→→argTwo
…

потому что у них «таб в 4 символа и оно выглядит ровно», надо просто бить ремнём. По заднице, которой думают, или рукам которые из неё растут — не важно. Но нельзя же из-за этого ломать редакторы нормальным людям!

Пёс с ним, в начале строки (до первого отличного от пробела\табуляции символа) можно при Tab|Shift+Tab вставлять\удалять отступы по настройкам проекта (пробелами или табами, хотя за отступы в начале строки пробелами надо тоже по рукам бить), но, блин, в середине строки какого хрена?

Получил кашу от экспорта файервола микротика на почитать, раскидал вместо пробелов в нужных местах табы…
(Отдельный привет латышам за то, что у них идёт сначала действие, потом цепь, потом комментарий, и только потом остальные параметры. А не «цепь, действие, параметры, комментарий», чтобы по вертикали более-менее ритм был какой-то)

Открыл в vscodium. Осталось несколько строк типа:

chain=alpha→comment=…
chain=beta•in-interface-list=…
chain=gamma→comment=…

Ну, думаю, тут пару табов можно и руками воткнуть… удаляю пробел после беты, жму Tab, и эта зараза мне обратно пробел вставляет. Рукалицо.свг
Я какую клавишу нажал? А ты что воткнула, софтина триклятая?

Если я жму «tab», мне надо в строку добавить «\t». Жму пробел — воткни пробел. А если я путаю эти две клавиши — меня надо держать по-дальше от компьютера, но это уже не техническими средствами решать надо.

PS Спасибо, выговорился.

PPS А почему в тегах butthurt на баттхёрт меняется, а не наоборот? И почему при замене он встаёт не на своё место, а в конец? Второй вопрос снимается. Сортировка по алфавиту. Но это странно. В трэкере показывает лишь первые 3, а ТС, наверное, виднее какие из тегов более приоритетные в топике?

★★★★★

Последнее исправление: mogwai (всего исправлений: 2)

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

Aceler ★★★★★
()

А почему в тегах butthurt на баттхёрт меняется, а не наоборот?

Так решили модераторы. На ЛОР действует слияние тегов, чтобы не плодили всякие похожие.

Aceler ★★★★★
()

Возникают вопрос, чем думали принимающие решение, что это хорошая идея

Видимо, было слишком много жалоб от правивших YAML :)

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

На ЛОР действует слияние тегов

А кое-где есть синонимы, чтобы можно было писать любые теги, но поиск по ним не ломался.

GAMer ★★★★★
()

Кому широкий, кому узкий отступ нравится — фиолетово. Все увидят как им приятнее

Почему ты вообще решил, что это место для творчества и креативности?

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

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

И привожу пример, где табами устанавливается отступ блока, а внутри блока пробелами. Ибо в отличии от тёть, про которых @thesis говорит, в plain text файле нет никаких инструментов по форматированию текста.

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

Так может это извращенцы будут делать"editor.insertSpaces": true,… а по дефолту будет нормальное поведение?

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

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

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

Причём тут творчество? У кого-то экран маленький, он ютится с отступами в пару символов. Кому-то читать удобнее если отступ в 8. Меня не колышит (да и кто я такой, чтобы меня колышило), как им воспринимать удобнее. Надо — ставит таб в 2 символа, надо — хоть 22.

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

Я о том, что баттхёрт по русски как-то… логичнее наоборот баттхёрт в латиницу переводить, а не как сейчас.

mogwai ★★★★★
() автор топика

Поздно ты спохватился, все перешли на пробелы как раз для того, чтобы везде выглядело одинаково

slyjoeh ★★★
()

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

запущу автоформаттер, который настроен по гайдлайну проекта. Всё остальное – говно и самодеятельность.

cocucka_B_TECTE
()

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

Второй пример плохой.

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

ЯМЛ не язык громирования, его заскоки не отражают среднюю температуру по больнице :)

Bfgeshka ★★★★★
()
Последнее исправление: Bfgeshka (всего исправлений: 1)

Ты бы микротыкам доступы не давал. Страна под кем надо, закладки в полном объёме.

А по теме - не хватает табов для форматирования кода. Чтобы хватало - на это закладываться надо, и то задача не однозначная

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

А чтобы оправдать использование автоформаттера, писать будешь специально в нарушение этого гайдлайна?

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

Мне тоже не нравится. Но это всё-равно лучше пробелов.

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

Видимо, «большинство» решило так, а далее пусть и безобразно, но главное - единообразно.

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

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

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

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

Не нужны те, кто начало строки сдвигает пробелами. А табы нужны. В частности для того, чтобы описанную @bread несогласованность исключить. 4 пробела — всегда 4 пробела. А 1 таб — это столько, сколько юзернейму достаточно для того, чтобы ориентироваться по тексту.

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

Но вообще мало кто умеет табами форматировать. А тот, кто уверен, что умеет, все равно налажает рано или поздно.

Что тут уметь и где лажать? Ошибка есть ровно одна, и она продемонстрирована в похожей теме:

static ssize_t ignore_nice_load_store(struct gov_attr_set >*attr_set,                                                                                                                         
<------><------><------><------>      const char *buf, size_t >count)

Т.е. те, кто аргументируют преимущество табов возможностью самому >настраивать длину таба, получат плохое выравнивание, например, в >случае tab == 4 spaces:

static ssize_t ignore_nice_load_store(struct gov_attr_set *attr_set,                                                                                                                         
<--><--><--><-->      const char *buf, size_t count)                                                                                                                                    

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

static ssize_t ignore_nice_load_store(struct gov_attr_set *attr_set,
⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅const char *buf, size_t count)
{
<------>struct dbs_data *dbs_data = to_dbs_data(attr_set);
<------>unsigned int input;
<------>int ret;
…

Т.к. это единственный способ оформления кода, при котором не плавают сдвиги из-за того, что у кого-то не так настроена ширина таба. Что значит отсутствие священных воин из-за этого. А вместо того, чтобы принять «с начала строки пробелами, ибо тут позиция важна, а до «начала строки» — табы, т.к. тут важно уровень вложения показать». Ведь даже в обосновании необходимости таба в 8 символов пишут:

The whole idea behind indentation is to clearly define where a block of control starts and ends.

А что может лучше показать уровень отступа, чем количество символов? И почему в той же 198-й строке, которую @Sahas в пример привёл, они сделали аж четвёртый уровень вложения, хотя он нулевой по факту?

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

Меня это в той же idea раздражает. Пишешь текст, а он сам прыгает. Это обосновано, когда она контекстные подсказки раскидывает параметрам вызовов методов. Но в остальном… когда надо будет, я нажму Ctrl+Shift+F. Не нажму — сделаешь это перед коммитом.

mogwai ★★★★★
() автор топика

нажимаю Tab, эта зараза мне пробелы вкорячивает

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

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

Цифры не нужны. Буквами можно хоть стопяцот раз всё передать, буквы универсальны. А цифрами нет, и всё-равно придётся мешать с буквами.

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

Второй вопрос снимается. Сортировка по алфавиту. Но это странно. В трэкере показывает лишь первые 3, а ТС, наверное, виднее какие из тегов более приоритетные в топике?

Вот с этим согласен, кстати.

А табы — костыль, который лучше бы никогда не существовал.

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

Первый строчка ОП прочитай, ну)

mogwai ★★★★★
() автор топика

А почему в тегах butthurt на баттхёрт меняется, а не наоборот?

Лорчую. Лучше бы оставляли оригинальный тег со ссылкой на сгруппированую страницу.

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

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

запущу автоформаттер, который настроен по гайдлайну проекта.

А я потом наверное встану в очередь желающих «лично познакомиться» с деятелем который автоформатером переколбасил тонну кода ради «красоты». Ага :)

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

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

mogwai ★★★★★
() автор топика

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

Таб – это ни что иное, как несколько пробелов. И упомянутые вами редакторы кода все правильно делают. Не нужно наделять данный рудимент изначально нехарактерными ему свойствами, и все станет на свои места.

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

Зачем? Вы до сих пор на VT100 программируете? Если это очень надо, то можно перед коммитом проверку сделать со стандартным для проекта размером таба.

X512 ★★★★★
()
→→varName = functionName( argOne,
→→••••••••••••••••••••••• argTwo

Не надо так делать. Надо так и проблем не будет:

→→varName = functionName(
→→→argOne,
→→→argTwo
→→);

Не понимаю засем некоторые любят всё выравнивать. Это повышает накладные разсхды при написании кода при сомнительном профите.

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

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

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

в редакторах зачем-то пихают подмену табов пробелами.

Традиця однако - пишущая машинка при нажатии таба вставляла на бумагу именно пробелы. В результате на бумаге текст был отформатирован пробелами и всех это устраивало.

Идея сохранять исходник не в виде plain text,а в виде какого-нибудь языка разметки чтобы форматировать при выводе на экран в соответствии с предпочтениями читающего - право на жизнь вполне имеет,но за полвека о едином языке разметки так и не договорились. Вот и имеем то что имеем. Договориться не смогли даже о едином общепринятом способе форматирования сишного текста. Вот так и живем.

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

Я бы поспорил, но правильного мнения тут нет — это чистая вкусовщина.

А что тратить на это время во время написания, как минимум, странно — согласен. Выравнивание автоматически должно производиться по шоткату.

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

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

Мне на его ширину плевать. Одинаково ориентируюсь и когда он в 2 символа выставлен, и в 4, и в 8. В какой-то момент придумали, что можно в настройках «tab width» задать — пусть, мне оно не мешает.
Но из-за этого проявилась проблема, когда погромисты табы используют неправильно (не для отступа, а для позиционирования).
И началась священная битва тех, кто знает истинную ширину таба против тех, кто логику задаёт пробелами.

Однозначно правых в этой войне нет: с обеих сторон есть рациональные доводы против альтернативного подхода. А всё потому, что оба лагеря апеллируют к примерам неправильного использования символов.

Табами нельзя выравнивать по позиции. Пробелами нельзя управлять уровнем вложенности блока. Точка. Все остальные вопросы (выравнивать ли многострочные аргументы по позиции, или перечислять их во вложенном блоке, и т. п.) этому не противоречат. И устанавливаются в проекте.

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

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

А ещё на бумаге нельзя удалить уже напечатанное. Предлагаете вносить изменения в текст забивая ошибочные символы перечёркиванием?

И да, машинка не «вставляла именно пробелы», а сдвигала каретку на несколько символов. В пишушей машинке вообще нет «вставки пробела».

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

Не понимаю засем некоторые любят всё выравнивать. Это повышает накладные разсхды при написании кода при сомнительном профите.

я три месяца осилил работать на людей, у которых «программа качества кода» велела делать так:

  SELECT
        field1            ,
        field2            ,
        megafield         ,
        supermegafield
    FROM
        tabl
   WHERE
        field       = 1    AND
        megafield  >= 2
ORDER BY
        field1
Пять минут пишешь запрос - полдня выравниваешь пробелами по правому краю ключевые слова.

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

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

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

Может они SQL запросы в Excel составляют. Видел такое.

X512 ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)