LINUX.ORG.RU

Tab, spaces, GitHub

 


0

1

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

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

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

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


Пробелы. Нормальные редакторы и IDE нормально обрабатывают пробелы.

Deleted ()

Не менять

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

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

разве так не вообще везде

Увы, нет. Отступы делаются корректно, стирание и переходы - не из коробки.

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

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

Но читать на GitHub очень неудобно, а .editorconfig в репе тоже будет общим для всех (и перекрывает настройки IDE)

Uter ()

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

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

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

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

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

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

Не, с выравниванием всё в порядке, только вкусовщина из-за огромных отступов

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

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

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

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

табы размером в 4 пробела

Или крестик или штоны

mos ★★☆☆☆ ()

Если у тебя удобочитаемость привязана к размеру таба, то у тебя нет разницы между табами и пробелами. Правило простое: ident with tabs, align with spaces. Т. е. от размера таба у тебя должны поехать только отступы, а всё выравнивание при этом сохраняется

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

Правило простое: ident with tabs, align with spaces.

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

rupert ★★★★★ ()

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

Что значит «там»? Ты имеешь в виду веб-просмотрщик кода? Ну это далеко не основная функция гитхаба, как код в нём выглядит — дело десятое, а люди, которые захотят с твоим кодом поплотнее познакомиться, всё равно сделают git clone

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

И нужно везде об этом заботиться

Кто мешает на pre-commit повесить хук, дёргающий какой-нибудь astyle?


Поэтому всем прийдется различать табы и пробелы в редакторе

А в чём проблема? И vim, и KDevelop, и KWrite (из того, чем пользуюсь) прекрасно показывают табы так, чтобы их нельзя было спутать с пробелами

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

Правильно! Нужно просто херачить всё в одну строку, тогда ни табы, ни стиль кода, не будут никому мешать.

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

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

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

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

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

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

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

grem ★★★★★ ()

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

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

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

Визуально меняет. Вместо буквальных зацепов к словам мог бы пытаться смысл понять.

в редакторах уже давно есть настройка замены нащатия Tab на нужное количество пробелов

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

никакие пробелы уже давно никто не долбит.

Это просто неправда.

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

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

2. Не менять

this

А отступы пробелами - мерзость и преступление. Гвидо надо пендалей надавать только за то, что узаконил эту мерзость в PEP8. Впрочем в своих проектах я этот конкретный пункт PEP8 всё равно нах** шлю.

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

Визуально меняет лично для тебя, а не вообще.

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

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

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

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

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

И кратность длины отступа ещё. Это несложно сделать, но не делают.

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

А чего у них спрашивать, для них работает и ладно.

Визуально меняет лично для тебя, а не вообще.

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

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

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

Bfgeshka ★★★★★ ()

Не использовать табы. Говорили же вам.

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

И в этом вся соль - можно менять визуальное представление для каждого

и эти же люди потом ещё жалуются на поехавшее форматирование в офисных документах

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

И кратность длины отступа ещё. Это несложно сделать, но не делают.

Угу, а потом пытаешься выровнять

long int procedure_name_with_long_descriptinon(int x,
                                                int y)

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

В нормальных IDE есть «удалить Tab». Обычно Shift-Tab.

monk ★★★★★ ()

Вы не понимаете что такое таб. У таба нет размера, в этом их преимущество и причина обязательного использования для отступов. В этом же причина невозможности использования их для выравнивания. Поэтом indent with tabs, align with spaces. Если у вас что-то там поехало из-за другого «размера» табов, то вы используете их для выравнивания, не надо так делать.

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

Нет, не жалуются, поехавший тут только ты.

Офисная бумажка и файл исходника это разные вещи, небо и земля.

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

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

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

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

Правило простое: ident with tabs, align with spaces.

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

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

А в чём проблема?

ТС как раз и начал с описания проблемы. Табы выглядят как говно, если не настроены. А маньяков, любящих настраивать табы меньшинство. Более того, иногда это сделать не так просто (с чего и началась тема). Но в любом случае иногда это приходится делать.

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

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

Ну и нахрена было кастовать сюда плюсовиков?

Ага, надо было созвать GO'шников. У них проблем нет, без табов просто не компилируется.

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

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

Более того, вручную отступы никто не делает, IDE сама вставляет пробелы при нажатии Enter (или вызове АвтоОтступов).

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

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

А ну понятно. Есть мое мнение и неправильное. И все должны поступать как тебе хочется.

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

Табы выглядят как говно, если не настроены

Что значит «не настроены»?

А маньяков, любящих настраивать табы меньшинство

Что там нужно «настраивать»?

иногда это сделать не так просто

Приведи-ка пример.

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

Да, отступы в один пробел, расставленные Васей будут просто работать. Всегда. Одинаково у всех. И именно поэтому пробелы говно.

anonymous ()

На Github'е можно в url добавить ?ts=4 и получить так размером в 4 места.

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

Что значит «не настроены»?

Прочитай исходное сообщение топика.

Что там нужно «настраивать»?

А о чем по-твоему этот топик?

Приведи-ка пример.

Первое сообщение топика.

Да, отступы в один пробел, расставленные Васей будут просто работать. Всегда. Одинаково у всех.

Если так решил техлид или кто в твоем проекте решает какой должен быть стиль кода - то так и должно быть. Кстати, приведи пример проекта с отступом в 1 пробел.

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

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

grem ★★★★★ ()

Любители вэбни(там, где она не нужна) и пробелов в отступах как всегда страдают

2ТС: при заморочках на таких мелочах главным функционалом твоего проекта будет «пример идеального выравнивания»(ну и генерация унылых срачей вроде этого)

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

нахрена было кастовать сюда плюсовиков?

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

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

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

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

Жалуются другие. Одни и те же не жалуются. Жалуются те, кто не являются этими. Те, кто не код набирают, а документики в ворде.

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

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

при заморочках на таких мелочах главным функционалом твоего проекта будет «пример идеального выравнивания»(ну и генерация унылых срачей вроде этого)

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

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

Пусть сразу в двоичном коде набирают. Чё уж там.

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

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

Есть куча вариантов, каким должен быть размер табуляции, но ты почему-то выбрал 8 символов и утверждаешь «моё мнение тут совершенно ни причём».

Поэтому я и написал, что есть два мнения: мое и неправильное.

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