LINUX.ORG.RU

Tab, spaces, GitHub

 


0

1

Есть небольшой проект, при создании использовались табы размером в 4 пробела (настройки IDE).

Теперь хочется выложить на GitHub, но там размер таба - 8, и всё становится неудобочитаемым. Как правильно сделать?

1. Заменить табы на пробелы, повесить на IDE плагин, улучшающий работу с пробелами как с табами (backspace стирает до ближайшего «таба», позиционирование курсорными клавишами по «табам» и т.д.)

2. Не менять, добавить .editorconfig указывающий размер таба


За табы в коде надо увольнять с волчьим билетом.

Мне кажется, для людей, которые не понимают, чем плохи табы в коде - отлично подойдут какие-то професси вне IT - например разносчик пиццы, продавец в евросети, дворник в конце концов. Но в IT им не место. Как впрочем и в любой другой области, требующей напряженной работы в команде.

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

Все верно сказал. IMHO, использование табов в коде довольно четкий критерий, выявляющий разработчиков не способных к работе в команде.

anonymous
()

Любому нормальному человеку будет совершенно насрать, какие там у тебя табы и всё такое. Да хоть вообще без форматирования. Потому что если кому нужно посмотреть в код и чтоб красиво было - у тех есть indent которым можно сделать как нравится.

А так вообще - используй стиль сырцов ядра, да и всё. Будут вопросы - посылай нафиг и показывай средний палец.

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

Традиционно эти позиции располагаются каждые 8 знакомест, в колонках 1, 9, 17, 25

In practice, settable tab stops were rather quickly replaced with fixed tab stops, de facto standardized at every multiple of 8 characters horizontally...

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

Есть куча вариантов, каким должен быть размер табуляции

Можно примеры не выставленные вручную?

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

Традиционно эти позиции располагаются каждые 8 знакомест, в колонках 1, 9, 17, 25

In practice, settable tab stops were rather quickly replaced with fixed tab stops, de facto standardized at every multiple of 8 characters horizontally...

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

Я вот попробовал погуглить по «tab size» и увидел дополнение «2 or 4». Так что про 8 все давно забыли, кроме, разве что linux code style, который придумали тоже очень давно.

Можно примеры не выставленные вручную?

А кто-то еще пользуется табом в 8 пробелов?

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

попробовал погуглить по «tab size» и увидел дополнение «2 or 4»

где увидел? так 2 или 4? ты сам определиться не можешь, а лезешь опровергать, что 8 - по сути стандарт.

табуляция в 8 позиций гарантирует, если это целенаправленно не менять, что текст будет выглядеть везде одинаково и не уползёт за требуемое по code style число символов в строке.

про 8 все давно забыли

ты точно читал текст темы ТС?

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

не способных к работе в команде

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

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

Ставишь курсор на начало int, нажимаешь Backspace, а «умное» IDE сносит 8 пробелов. Бесит.

Забинди вызов clang-format на хоткей и забудь этот онанизм как страшный сон. Пиши хоть в строку, хоть в столбик, машина расставит всё по своим местам и сделает это быстрее и качественнее любого WYSIWYG-мартыхана.

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

clang-format

расставит всё по своим местам и сделает это быстрее и качественнее любого WYSIWYG-мартыхана.

ОРУ просто в голос. clang-format — и качественнее? Лол.

Качество — это uncrustify. Но оно не умеет в C++11.

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

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

У машины странное представление о качестве. Вот как её заставить сделать

int set_data(double x, double y, double z,
             kobj data,
             string comment);
?

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

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

Ничего не делать, к слову. Какая разница, как оно выглядит именно на сайте.

Неудобно ревьюить, коментить мердж-реквесты?

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

x, y, z свернуть в один тип и готово. Заодно они не перепутаются местами.

В смысле, вместо set_data(10, 42, 69, o, «ok») предлагаешь писать set_data(new coords(10, 42, 69), o, «ok»). Хотя как это поможет не перепутаться местами? И надо не забыть внутри set_data сделать delete.

Или сразу

unique_ptr<coords> temp = make_unique<coords>(new temp);
temp->x = 10;
temp->y = 42;
temp->z = 69;
set_data(temp, o, "ok");
?

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

Человеку, делающему отступы пробелами, неплохо подойдет работа начинающей секретарши (опытные-то уже умеют форматировать).

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

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

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

Зачем new...?

Передавай структурки по значению. Лень проверять, но ЕМНИП в Intel ABI структура из double-ов будет передаваться эффективнее, чем отдельные аргументы, т.к. поля структуры упакуются в один XMM-регистр.

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

Так её всё равно придётся на стеке сначала заполнить. А при передаче по значению она ещё раз скопируется. Или покажи код, что ты имеешь в виду.

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

Например, сделать тип Cartesian, чтобы вместо x, y, z тебе не приехали rho, phi, theta. Например, сделать типы Rect, Point, Size чтобы вместо x1, y1, w, h тебе не приехало x1, y1, x2, y2 или x1, x2, y1, y2 или ещё что-нибудь. И т.д.

unique_ptr<coords> temp = make_unique<coords>(new temp);

Ты бухой что ли?

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

Ты бухой что ли?

Он вроде лиспер.

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

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

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

Например, сделать тип Cartesian, чтобы вместо x, y, z тебе не приехали rho, phi, theta.

Так в set_data вообще координаты не геометрические. Просто некоему набору измерений приписываются данные. И какая разница, как называется тип, который используется всего лишь для группировки аргументов?

Ты бухой что ли?

Должно быть

unique_ptr<coords> temp = make_unique<coords>();
?

Или претензии к семантике, а не к синтаксису?

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

про 8 все давно забыли

ты точно читал текст темы ТС?

Цитирую:

там размер таба - 8, и всё становится неудобочитаемым. Как правильно сделать?

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

IMHO, отступы можно делать пробелами или табами, но пробелы «просто работают», причем всегда одинаково, а с табами внезапно временами возникают неприятности типа той, что описал ТС. Поэтому разработчики с опытом (если они не упертые бараны) предпочитают пробелы (в командной работе), чтобы каждому члену команды не приходилось настраивать размер таба в каждом приложении (не только IDE), в котором приходится смотреть код хотя бы раз, а также бороться с приколами типа скопипастили код, в редакторе, который при копировании заменит табы на пробелы (например, во время быстрой правки в том же GitHub или другом редакторе, вместо настроенной на табы IDE) и после этого получаем смешение отступов табами и пробелами (в результате чего код выглядит как говно). Еще есть шанс, что код с пробелами придет в виде pull request, а очень не многие рецензенты будут загружать его в IDE и править отступы, чаще просто нажмут кнопку «Принять» в веб.

Отступы табами - удел зеленых студентов с избытком образования и недостатком опыта, которым на лекциях сказали как «правильно» делать (они и делают, пока не наберутся опыта и не поймут, что делать надо как удобнее, причем всем в команде, тут удобство рассчитывается исходя из соотношения полезности/ценности для проекта и требуемых затрат, а «правильность» - это чисто субъективное мнение человека, причем у разных людей «правильно» может быть разным). В реальной разработке есть более актуальные задачи, чем борьба с косяками типа описанных ТС (а они будут проявляться регулярно).

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

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

А теперь расскажи, зачем ты выбираешь выравнивание табами и топишь за размер таба в 8 символов (что вообще никто сейчас не использует)?

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

Забинди вызов clang-format на хоткей и забудь этот онанизм как страшный сон.

И займись настройкой clang-format...

IMHO, выравнивание - это визуальный способ сделать код более читаемым и понятным для человека, а потому именно человек должен решать какое должно быть выравнивание. Машина лишь помогает в этом, а потому AutoIndent нужно вызвать вручную в IDE и визуально контролировать результат. QtCreator у меня код с лямбдами автоматом превращает в говно, я его исправляю в (полу)ручную. Если какой-то clang-format вызванный автоматом испоганит выравнивание, да еще и эти строки (не относящиеся к изменениям в очередном diff-set) появятся в очередном diff'е, потому что там изменилось количество пробелов и рецензенту придется на них отвлекаться, то нафиг такой инструмент.

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

x, y, z свернуть в один тип и готово. Заодно они не перепутаются местами.

Абалденно! Поменять API, чтобы машине было удобнее, потому что по-другому она не умеет, а у оператора слишком крепкие заморочки, чтобы отказаться от них.

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

А кто-то еще пользуется табом в 8 пробелов?

те, кто пишут на golang

Да, у чуваков, когда они изобретали UNIX, C, Linux табы были 8 символов, с тех пор, когда они пишут стандарт, там указана эта цифра. У всех остальных 4, реже 2 (есть любители 3 и, даже, 5), но не 8. Эти динозавры все еще полезны, за это их и держат (хотя даже динозавры часто бывают более гибкими и способными к адаптации, чем многие студенты, которые так и живут с синдромом утенка).

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

Лучше ты скажи, где я заявлял, что отступы должны быть табами? Я считаю, если не оговорено codestyle, что отступы должны быть пробелами. А вот если используется табуляция, как например, принято в ebuild файлах, то табуляцтя должна переносить курсор на позиции кратные 8 - по крайней мере это позволит соблюдать ограничения на длину строки, если таковое есть.

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

Вы больны синдромом Дауна? Табы для того и нужны, чтобы спокойно работать в команде, а не трахаться с «единственно верной» хотелкой лавсанчика, желающего отступы в 11,5 пробелов.

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

А вот если используется табуляция, как например, принято в ebuild файлах, то табуляцтя должна переносить курсор на позиции кратные 8

С этим согласен. Если в ebuild, Makefile обязательно должны быть табы, то им лучше быть по 8 символов.

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

Вы больны синдромом Дауна?

Не знаю. А ты часто проверяешься?

Табы для того и нужны, чтобы спокойно работать в команде, а не трахаться с «единственно верной» хотелкой лавсанчика, желающего отступы в 11,5 пробелов.

Именно! Они позволяют каждому делать какой захочется отступ, но какой ценой?

Польза от табов: альтернативно одаренный Васян, который не может кодить с отступами в 4 пробела сможет установить у себя 5 (или 3).

Цена табов:

  • каждый разработчик вынужден настраивать размер таба не только в IDE, но и в любой программе, в которой работает с кодом, притом что не все они имеют такую настройку (браузер, notepad/vim, тот скрипт на стековерфлоу, который подсвечивает вставленные блоки кода). Иначе код выглядит как говно.
  • Когда копипастишь код, нужно следить, чтобы там остались табы.
  • Когда принимаешь код из PullRequest, нужно следить, чтобы там остались табы.
  • В общем за табами нужно следать всегда, так что не понятно, как работать с кодом, кроме как в своей настроенной IDE. Иначе код будет выглядеть как говно.
  • Табы с пробелами смешивать нельзя, а так как в большинстве случаев используют пробелы, то за табами придется постоянно следить. Иначе код будет выглядеть как говно.
  • За табами нужно следить всегда и везде, но все равно они себя где-нибудь проявят не так, как хочет Васян (например, как у ТС).

Польза от пробелов:

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

Цена пробелов: команда останется без Васяна (не уверен, что это нужно писать в этот список).

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

не понимают, чем плохи табы в коде

А чем плохи табы в коде?

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

Польза от табов: альтернативно одаренный Васян, который не может кодить с отступами в 4 пробела сможет установить у себя 5 (или 3).

Это не польза, а потакание имбецилам-табоебам.

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

Низкопробный похапист несёт светлую правду в тёмный мир IT.

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

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

Не знаю. А ты часто проверяешься?

А я знаю. У тебя как минимум умственная отсталость.

Именно! Они позволяют каждому делать какой захочется отступ

Ты в чём-то против, дурачок?

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

Давай, расскажи, в какое говно превращается код, если я настроил «размер таба не только в IDE, но и в любой программе, в которой разработчик работает с кодом» и т.д.

Когда копипастишь код, нужно следить, чтобы там остались табы

А ещё нужно следить, чтобы там остался код. Что сказать-то хотел?

Когда принимаешь код из PullRequest, нужно следить, чтобы там остались табы

Ты опять под тяжёлыми наркотиками?

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

Это относится только к пробелам. У кода с табами таких проблем нет.

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

Мне фиолетово, что использует твоё большинство похапистов. Если мешаешь в отступах табы с пробелами, то это исключительно твои проблемы.

За табами нужно следить всегда и везде

За табами нужно «следить» всегда и везде только твоим похапистам.

но все равно они себя где-нибудь проявят не так, как хочет Васян

Пример приведёшь или дальше слюни пускать будешь?

например, как у ТС

А что у ТС? Боязнь изменить ширину таба?

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

Твой код с отступом в четыре пробела будет работать одинаково и у твоего одноклассника с отступом в два пробела?

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

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

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

За табы в коде надо увольнять с волчьим билетом

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

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

Вы, главное, помните, что Ваша команда — не единственная в мире.

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

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

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

Ну, и кто тут школьник?

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

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

Жалко конечно того пацана, который создал UNIX, C и Go, но я поддерживаю. Разве что не от общества, а от разработки программ (в том числе и компиляторов).

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

Ну, и кто тут школьник?

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

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

Сделать на гитхабе красиво это задача утопающего, потому что у всех на этот счёт своё мнение.

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