| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разные вопросы > Странные стандарты кодирования. |
| Автор: Logo 13.5.2010, 20:25 |
| В некоторых стандартах кодирования советуют вместо табуляции использовать пробелы. Странно, как вообще такое пришло в голову, это же неудобно. Приведу несколько аргументов в пользу табуляции:
|
| Автор: DarkProg 13.5.2010, 21:02 |
Символ одинаковый и весьма распространёный в любом документе, следовательно, архиваторы сожмут его лучше Также вообще-то стандартный символ табуляции имеет строго фиксированную ширину и насколько я знаю, то не всем людям нужен такой отступ, так что я думаю это дело вкуса что хочется конкретно использовать Также если не использовать хотя бы один символ в виде буквы(в нашем случае знак табуляции), то этот символ можно использовать для каких-то иных целей(цели - любые желание разработчиков, которые взбредут в голову) Ну вот собственно говоря моё мнение. |
| Автор: djamshud 13.5.2010, 21:10 |
| Холивару сто лет в обед. Пробелы - это в первую очередь гарантированное смещение (визуально в одном редакторе таб можно настроить так, а в другом будет сяк - и что делать с получившейся адской лесенкой? (да-да, код вы пишете не только для себя и машины)). >Немногие редакторы можно настроить Сексуальная проблема редактора и его несчастных пользователей. >Отступ делается всего одним нажатием на клавишу, с пробелами кликать в 2-3-4 раза больше. Редактор реагирует на нажатый таб и вбивает нужное количество пробелов, очевидно же. Нотепад так не умеет, но см. предыдущий пункт. |
| Автор: Logo 13.5.2010, 22:01 | ||||||||||
Вот именно, что не только для себя. Открыв чужой код с табами просто выставишь настройку, и все как тебе удобно, а с пробелами все так, как было удобно другому человеку, с другим шрифтом или разрешением.
Очевидно, что это тоже самое, что пить водку через нос)
Большинство, даже достаточно слабеньких редакторов имеют настройку ширины таба. По крайней мере из тех что я использовал - все.
Офигительное преимущество
Это вообще непонятно. Как и для каких целей использовать? |
| Автор: djamshud 13.5.2010, 22:55 |
| >Вот именно, что не только для себя. Открыв чужой код с табами просто выставишь настройку, и все как тебе удобно, а с пробелами все так, как было удобно другому человеку, с другим шрифтом или разрешением. Открыв чужой код все _сразу_ будет оптимально выровнено. причем тут шрифты? Используете не моноширный при кодинге - ССЗБ. >Очевидно, что это тоже самое, что пить водку через нос) Нихера не понял. Если моя мысль тоже не ясна, перефразирую. Размер "таба" в пробелах задается в настройках. По умолчанию идет он. В каком-то месте слишком длинный идентификатор, по которому необходимо выравниваться? Добавляем еще "таб" или нужное число пробелов, и редактор для данного куска кода перенастраивается под новый размер отступа. Все удобно и просто. |
| Автор: Logo 14.5.2010, 07:51 | ||||||||
Оптимально для писателя кода, но не для нас. Мне, например 2 пробела обычно мало, предпочитаю 4 (хотя может зависеть от размера окна, величины шрифта). А при табах действительно _сразу_ будет выровнено в соответствии с вашими настройками.
Для полного счастья остается только сделать при открытии файла обратное преобразование пробелов в табуляцию.
Я говорю о отступах в перед блоками кода. Если нужно выравнивать от идентификаторов, согласен, нужно пользоваться пробелами, т.к. при других настройках выравнивание может поехать. |
| Автор: GoldFinch 14.5.2010, 08:21 |
| кроме редакторов есть еще и просмотровщики кода, например код можно смотреть в браузере |
| Автор: GoldFinch 14.5.2010, 13:15 | ||
с табами будут проблемы со следующим кодом
при другом размере таба, форматирование убъется, т.к. тут "x\t\t= 0\nxxxxx\t= 1" |
| Автор: djamshud 14.5.2010, 13:57 |
| Фантом, это не важно. А важно, что код будет гарантированно выровнен. Один пробел или шесть - кому-то может быть разница есть, мне нет, главное, что есть иерархия. //Сам отступы практически не использую:). Без них код вижу даже лучше, хотя с нормальными отступами тоже ничего. А вот каракатица из развалившихся табов бывает очень непрятной. |
| Автор: Logo 14.5.2010, 19:53 | ||||||||||
Дык про это уже писали, тут нужно использовать пробелы, сабж об отступах перед блоками кода, вроде
С табами - тоже гарантированно выровнен. Причем так, как нужно.
Это да, единственное пока преимущество. Хотя и не большое. |
| Автор: LSD 18.5.2010, 16:31 |
| http://forum.vingrad.ru/forum/topic-245944.html. |
| Автор: bars80080 18.5.2010, 19:17 |
| фтопку пробелы. заколебался править нечитаемые чужие наработки |
| Автор: Logo 22.5.2010, 10:51 | ||
Достали уже своей дубовостью, сабж о расставленный отступов, а не о выравнивании разных идентификаторов. Кто приведет пример кода, который с отступами из табов поедет? |
| Автор: djamshud 22.5.2010, 13:06 |
| Достал уже своей дубовостью. Сабж _только_ о расставлении отступов лишен всякого смысла. А раз идентификаторы, описания и аргументы функций и проч. выравниваются пробелами, нахера городить отдельную карусель из табов? |
| Автор: Logo 22.5.2010, 14:13 | ||||
|
| Автор: djamshud 22.5.2010, 19:53 |
| Еще раз. Табы - хорошо, потому что мой любимый notepad.exe не умеет никак иначе, - как минимум глупо. Для написания кода используются специализированные редакторы. >Отступ делается всего одним нажатием на клавишу, с пробелами кликать в 2-3-4 раза больше. Уважаемый кликальщик, в 99% случаев отступы выставляются автоматически. В одном проценте - нужно на мгновение задержать палец на пробеле. >Задать удобную визуальную ширину отступа можно из индивидуальных предпочтений, выставив tabstop в нужное количество пробелов. И это было бы хорошо, если код состоял из одних лишь блоков if, class и т.д. В общем случае придется совмещать табы с пробелами, и, что сука характерно, табо-кликальщики будто научены при таком раскладе раскорячить код, выровненный только под их любимый notepad.exe. Об одном и том же уже надоело. |
| Автор: GoldFinch 22.5.2010, 19:58 |
| давно пора сделать ИДЕ которая сама будет решать эту проблему. |
| Автор: Logo 22.5.2010, 20:13 | ||
| Допустим, 2 и 3 можно решить, изрядно повозившись с редактором (если проблемы нет, мы ее придумаем, ага). Но
По любому остается в силе. |
| Автор: djamshud 22.5.2010, 20:28 |
| Logo, я уже прокомментировал это недоразумение. |
| Автор: LSD 24.5.2010, 16:40 | ||
Это ты про тех "дубовых", которые не понимают, что выравнивание как и отступы это часть форматирования и говорить о них в отрыве от общего контекста оформления кода это глупо? Любуйся |
| Автор: bars80080 24.5.2010, 17:09 |
пффф! а чего тут удивляться? если кул-проггер мешал табы и пробелы. вот у него из-за пробелов всё и поехало |
| Автор: LSD 24.5.2010, 19:01 | ||
Это ты нашему гуру форматирования скажи: |
| Автор: Void 24.5.2010, 19:11 |
| Опять горячее обсуждение велосипедного сарая. |
| Автор: bars80080 24.5.2010, 19:17 | ||
эээ, махинация! я-то думаю, как так, ведь Лого другое отстаивает. ты на цитату в том посте смотрел? там пробелы после знаков "равно" перед значением переменной, а ты запробелил отступы перед блоками кода. |
| Автор: LSD 25.5.2010, 14:56 | ||
Сам ты махинация У табов только один плюс любой эстет у которого возникает нестерпимый butthurt от отступов несоответствующих его эстетическим представлениям о красивом коде, может это элементарно исправить изменив размер таба. В остальном одни минусы. Сложное форматирование одними табами не реализуется, и значит надо делать отступы табами, выравнивание пробелами. А поскольку IDE которые бы поддерживали подобный изврат скажем прямо не много, то заниматься форматированием придется в основном вручную. Учитывая что выравнивание идет пробелами, то жмакать на пробел надо будет не меньше. А с учетом того, что даже такой простой редактор как Notepad++ можно научить по табу вставлять нужное количество пробелов, то с форматированием отступы табами, выравнивание пробелами педалить возможно придется даже больше. Про то, что разные редакторы могут по разному обрабатывать табы, и значит форматирование может поехать, уже упоминали. Плюс есть такая штука как line wrapping. Например один эстет пишет код с большим количеством вложенных блоков при размере таба 2, а потом его открывает другой эстет у которого эстетический размер таба 8, так у него пол кода уедет за границу экрана. Он конечно не станет с этим мирится и быстренько устроит массовый line wrapping. А когда код откроет первый эстет, он увидит код в колоночку, абалденное зрелище В общем мое мнение таково: code style определяется автором проекта. И человеку со стороны, который лезтет с указаниями: а у вас тут отступы не те, имена переменных неправильно пишете, нужно просто указать http://foto.rambler.ru/public/my-strange-soul/_photos/26541715_nahujetovontuda/26541715_nahujetovontuda-web.gif. |
| Автор: bars80080 25.5.2010, 19:05 | ||
вот текста много, и слова мне известные, но смысл ускользает как нашкодивший кот. меня так и подмывает спросить: какие ваши доказательства? ничего кроме одного примера кул-проггера (пусть даже и из крупного проекта /тем хуже проекту/), совершенно не согласующегося со словами Logo и твоей интерпретацией, я не видел. зато я видел, что когда я получаю код, который мне не нравится по форматированию, то в случае с табами он быстро принимает нужный мне вид, by one click прямо скажем. а в случае с пробелами мне приходится тратить кучу времени на приведение его в порядок, иначе в глазах рассыпается его логика |
| Автор: Logo 12.6.2010, 15:53 | ||
Это ваш комментарий недоразумение. Множества пробелов в отступах - hardcode в чистом виде. |
| Автор: LSD 9.7.2010, 18:50 | ||||
Многа букф ниасилил, да?
Рекомендую посмореть в зеркало Я пока от тебя тоже ни одного примера кода, который был бы ужасен при форматировании пробелами и прекрасен при форматировании табами не увидел. Заодно хотелось бы примеры IDE которые могут делать форматирование по Logo. |
| Автор: bars80080 9.7.2010, 19:03 | ||||
| ну, я хотя бы сразу ответил, а ты видать решил осилить мою фразу до конца? там есть табы и пробелы?
да любой код, где для отступа применяется таб. нажал одну кнопку - он изменил величину, и всё, ты доволен
делать отступы? или что-то особенное имел ввиду? |
| Автор: LSD 9.7.2010, 19:11 | ||||||||
Вынужден огорчить твое ЧСВ, у меня есть и другие занятия кроме как с тобой спорить Там есть один товарищь который до сих пор не привел примера:
Так вот я к подобным эстетам не отношусь, я могу пережить код с отступом и 2 и 4 и 8, главное чтобы он был в едином стиле и не разъезжался как в случае с табами. Делат выравнивание используя табы и пробелы. Перечитай начало топика. P.S. Надеюсь я ответил достаточно быстро |
| Автор: bars80080 9.7.2010, 19:18 | ||||
не беспокойся, не ты один тут у меня в ногах
вообще-то здесь вопрос как раз эстетический. вообще, вся суть программирования состоит в том, чтобы облегчить человеческий труд, провести так называемую автоматизацию. и разработка удобных редакторов, а также стандартов форматирования кода, суть автоматизация процесса программирования. то есть это облегчение труда работника. ты называешь это эстетикой, а я - делать через одно место, когда можно гораздо удобнее, получая при этом вполне осязаемую прибыль - выигрыш во времени привёл, ты на него только что ответил ммм, первый пост как бэ спрашивает: какого чёрта некто пользуется пробелами. и приведены три причины почему лучше табами. там не говорится, что что-то нужно делать пробелами |
| Автор: Logo 9.7.2010, 19:59 | ||||
Не было такого. Топик об отступах, о чем там и не однократно сказано. Однако уже не однократно "фонаты" пробелов пытаются подменить понятия, хотя я еще на первой странице сказал, что для выравнивания идентификаторов по одной линии по вертикали, стоит использовать пробелы.
Уже три страницы болтовни, а реального примера где код с табами разъезжается, как не было, так и нет. |
| Автор: djamshud 10.7.2010, 03:24 | ||
| >сказал, что для выравнивания идентификаторов по одной линии по вертикали, стоит использовать пробелы. Уважаемый товарищ, расскажи, как ты будешь выравнивать идентификаторы в коде, отформатированном табами, по вертикали. Ты уперся в одно понятие, а тебе уже три страницы объясняют, что оно - ничто без второго понятия. Открой глаза, их не подменяют, а рассматривают их совокупность.
И либо пиздец форматированию, либо трах с его поддержкой. |
| Автор: Natalina 20.7.2010, 13:46 |
Модератор: Сообщение скрыто. |
| Автор: LSD 27.4.2011, 18:35 | ||
| И на хабре тему подняли http://habrahabr.ru/blogs/programming/118204/ http://habrahabr.ru/blogs/programming/118208/ В обсуждении был очень хороший комментарий:
|
| Автор: bars80080 27.4.2011, 19:42 | ||
что-то он ересь какую-то говорит. с унаследованным кодом как раз работать проще с табами. у всех количество пробелов на сдвиг по разному, а таб на сдвиг - он всегда один. код всегда будет открываться в привычном для тебя виде |
| Автор: skyboy 27.4.2011, 21:24 |
| LSD, я пока тему листал(вижу впервые) была мысля: ща кто-то некромантит после статьи на хабре. так и оказалось в статье, кстати, офигенски первым же аргументов отделяется aligning и indentation. и вариант - "только пробелы для первого" и "только табы для второго" лично меня устраивает абсолютно. кроме того, что все равно будут люди, которые станут умудряться нарушать соглашение. правда, у нас jlint в хуке на коммит запускается...(искать табы НЕ в начале строки и пробелы в начала - тут достаточно базовых знаний регулярок). |
| Автор: LSD 28.4.2011, 11:08 | ||||||||
И при этом как-то полностью игнорируется тот факт, что весь это "табовый рай" наступит при полном соблюдении этого если. Иначе он превращается в "табовый ад". В случае же с пробелами, это не рай, но вполне приемлимо всегда. Как показывает мой опыт, в унаследованом коде, всегда будет мешанина aligning и indentation. Ни один индус эти понятия не различает. Для нормальной работы "табового рая" нужно чтобы средство разработки поддерживало его полностью. Та же IDEA поддерживает smart tab для Java, но для Javascript уже не поддерживает по человечески. А сколько удовольствия можно получить если придется организовывать этот smart tab в редакторе уровня Notepad, это же просто праздник какой-то Плюс табовые апологеты как-то скромно замалчивают вопрос с max line length. Возьмет C# и какую нибудь типичную функцию:
Итого при max line length = 80 и tab size = 8, получаем ширину внутреннего блока 48 символов. А изменив tab size на 2 получим - 72. Т.е. просто сменив tab size на предпочитаемый человек рискует получить 24 пустых знакоместа в конце, т.е. фактически треть ширины экрана.
И какая регулярка ловит такое?
|
| Автор: skyboy 28.4.2011, 12:41 | ||
Добавлено через 39 секунд это не jlint. типа "псевдокод" |
| Автор: LSD 28.4.2011, 13:32 | ||
И что скажет эта регулярка на правильно отформатированный код:
? |
| Автор: skyboy 28.4.2011, 16:41 | ||||
не расползающийся при любом параметре tab-to-spaces. но это не значит, что такую смесь можно считать стилистически правильной. а так, да, регулярка работающая в любой момент времени только с одной строкой кода, никак не может провести анализ "оу, так оно же не расползается". а надо ли? если б проверка вынудила программиста вместо
написать
стало бы оно хуже читаться? нельзя было бы отличить список параметров от имени функции? |
| Автор: LSD 29.4.2011, 15:16 | ||||||||
Как это нельзя? А кто тут говорил красивые слова про aligning и indentation, про табы для одного и пробелы для другого?
Ну вот, тут и получается два варианта: 1. Изменить Code Conventions чтобы форматирование легко и приятно ложилось на табы. 2. Заставить всех разработчиков использовать единый отступ, но при этом получить возможность использовать любой aligning (в рамках Code Conventions конечно). А проверить что код форматирован пробелами еще проще, чем табами. Вот возьмем такой код:
смотрится нормально, а теперь если его отформатировать табами как ты предлагал:
смотрится менее читабельно. Понятно, что любое решение не лишено недостатков. Но на мой взгляд невозможность подстроить величину отступа под себя, меньшее зло, чем те пробелы которые вызывает использование табов. Если размер отступа 4, а не 2 - нет не стало бы. За пару дней привыкнешь и перестанешь замечать |
| Автор: Logo 14.6.2011, 10:49 |
![]() |