Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разные вопросы > Странные стандарты кодирования.


Автор: Logo 13.5.2010, 20:25
В некоторых стандартах кодирования советуют вместо табуляции использовать пробелы. Странно, как вообще такое пришло в голову, это же неудобно.
Приведу несколько аргументов в пользу табуляции:
  • Задать удобную визуальную ширину отступа можно из индивидуальных предпочтений, выставив tabstop в нужное количество пробелов.
  • Немногие редакторы можно настроить (еще и ман надо читать) на смещение выделенного блока по пробелам. Смещение выделения по табуляции же доступно в большинстве редакторов из коробки.
  • Отступ делается всего одним нажатием на клавишу, с пробелами кликать в 2-3-4 раза больше.
А что хорошего в пробелах smile?

Автор: DarkProg 13.5.2010, 21:02
Цитата(Logo @  13.5.2010,  20:25 Найти цитируемый пост)
А что хорошего в пробелах ?

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

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

Ну вот собственно говоря моё мнение.

Автор: djamshud 13.5.2010, 21:10
Холивару сто лет в обед. Пробелы - это в первую очередь гарантированное смещение (визуально в одном редакторе таб можно настроить так, а в другом будет сяк - и что делать с получившейся адской лесенкой? (да-да, код вы пишете не только для себя и машины)).

>Немногие редакторы можно настроить

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

>Отступ делается всего одним нажатием на клавишу, с пробелами кликать в 2-3-4 раза больше.

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

Автор: Logo 13.5.2010, 22:01
Цитата

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


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

Цитата

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


Очевидно, что это тоже самое, что пить водку через нос)


Цитата

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


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

Цитата

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


Офигительное преимущество smile 

Цитата

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


Это вообще непонятно. Как и для каких целей использовать?

Автор: djamshud 13.5.2010, 22:55
>Вот именно, что не только для себя. Открыв чужой код с табами просто выставишь настройку, и все как тебе удобно, а с пробелами все так, как было удобно другому человеку, с другим шрифтом или разрешением.

Открыв чужой код все _сразу_ будет оптимально выровнено. причем тут шрифты? Используете не моноширный при кодинге - ССЗБ.

>Очевидно, что это тоже самое, что пить водку через нос)

Нихера не понял. Если моя мысль тоже не ясна, перефразирую. Размер "таба" в пробелах задается в настройках. По умолчанию идет он. В каком-то месте слишком длинный идентификатор, по которому необходимо выравниваться? Добавляем еще "таб" или нужное число пробелов, и редактор для данного куска кода перенастраивается под новый размер отступа. Все удобно и просто.

Автор: Logo 14.5.2010, 07:51
Цитата

Открыв чужой код все _сразу_ будет оптимально выровнено. причем тут шрифты? Используете не моноширный при кодинге - ССЗБ.


Оптимально для писателя кода, но не для нас. Мне, например 2 пробела обычно мало, предпочитаю 4 (хотя может зависеть от размера окна, величины шрифта).
А при табах действительно _сразу_ будет выровнено в соответствии с вашими настройками.

Цитата

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

Очевидно, что это тоже самое, что пить водку через нос)



Для полного счастья остается только сделать при открытии файла обратное преобразование пробелов в табуляцию.

Цитата

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


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

Автор: GoldFinch 14.5.2010, 08:21
кроме редакторов есть еще и просмотровщики кода, например код можно смотреть в браузере

Автор: Фантом 14.5.2010, 12:16
Цитата(djamshud @  13.5.2010,  22:55 Найти цитируемый пост)

Открыв чужой код все _сразу_ будет оптимально выровнено. причем тут шрифты? Используете не моноширный при кодинге - ССЗБ.

Все сразу будет оптимально выровнено для того, кто этот код писал - а не для того, кто его открыл. У людей разные предпочтения - количество пробелов при отступе, попадавшееся мне в коде разных людей, варьировалось от 1 до 6 (более того - даже у одного меня это количество зависит от конкретного языка и меняется от 2 до 4).

Автор: GoldFinch 14.5.2010, 13:15
с табами будут проблемы со следующим кодом
Код

x         = 0
xxxxx     = 1

при другом размере таба, форматирование убъется, т.к. тут
"x\t\t= 0\nxxxxx\t= 1"

Автор: djamshud 14.5.2010, 13:57
Фантом, это не важно. А важно, что код будет гарантированно выровнен. Один пробел или шесть - кому-то может быть разница есть, мне нет, главное, что есть иерархия.

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

Автор: Logo 14.5.2010, 19:53
Цитата(GoldFinch @ 14.5.2010,  13:15)
с табами будут проблемы со следующим кодом
Код

x         = 0
xxxxx     = 1

при другом размере таба, форматирование убъется, т.к. тут
"x\t\t= 0\nxxxxx\t= 1"

Дык про это уже писали, тут нужно использовать пробелы, сабж об отступах перед блоками кода, вроде
Код

if(...) {
  if(...) {
    ...
  }
} 


Цитата

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


С табами - тоже гарантированно выровнен. Причем так, как нужно.

Цитата

кроме редакторов есть еще и просмотровщики кода, например код можно смотреть в браузере 


Это да, единственное пока преимущество. Хотя и не большое.

Автор: 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
Цитата(LSD @ 18.5.2010,  16:31)
http://forum.vingrad.ru/forum/topic-245944.html.

Достали уже своей дубовостью, сабж о расставленный отступов, а не о выравнивании разных идентификаторов. Кто приведет пример кода, который с отступами из табов поедет?

Автор: djamshud 22.5.2010, 13:06
Достал уже своей дубовостью. Сабж _только_ о расставлении отступов лишен всякого смысла. А раз идентификаторы, описания и аргументы функций и проч. выравниваются пробелами, нахера городить отдельную карусель из табов?

Автор: Logo 22.5.2010, 14:13
Цитата

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

Цитата

    * Задать удобную визуальную ширину отступа можно из индивидуальных предпочтений, выставив tabstop в нужное количество пробелов.
    * Немногие редакторы можно настроить (еще и ман надо читать) на смещение выделенного блока по пробелам. Смещение выделения по табуляции же доступно в большинстве редакторов из коробки.
    * Отступ делается всего одним нажатием на клавишу, с пробелами кликать в 2-3-4 раза больше.



Автор: 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 можно решить, изрядно повозившись с редактором (если проблемы нет, мы ее придумаем, ага).
Но
Цитата

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

По любому остается в силе.

Автор: djamshud 22.5.2010, 20:28
Logo, я уже прокомментировал это недоразумение.

Автор: LSD 24.5.2010, 16:40
Цитата(Logo @  22.5.2010,  11:51 Найти цитируемый пост)
Достали уже своей дубовостью, сабж о расставленный отступов, а не о выравнивании разных идентификаторов.

Это ты про тех "дубовых", которые не понимают, что выравнивание как и отступы это часть форматирования и говорить о них в отрыве от общего контекста оформления кода это глупо?


Цитата(Logo @  22.5.2010,  11:51 Найти цитируемый пост)
Кто приведет пример кода, который с отступами из табов поедет? 

Любуйся smile

Автор: bars80080 24.5.2010, 17:09
Цитата(LSD @  24.5.2010,  16:40 Найти цитируемый пост)
Любуйся

пффф! а чего тут удивляться? если кул-проггер мешал табы и пробелы. вот у него из-за пробелов всё и поехало

Автор: LSD 24.5.2010, 19:01
Цитата(bars80080 @  24.5.2010,  18:09 Найти цитируемый пост)
а чего тут удивляться? если кул-проггер мешал табы и пробелы. вот у него из-за пробелов всё и поехало 

Это ты нашему гуру форматирования скажи:
Цитата(Logo @  14.5.2010,  20:53 Найти цитируемый пост)
тут нужно использовать пробелы, сабж об отступах перед блоками кода, вроде

Автор: Void 24.5.2010, 19:11
Опять горячее обсуждение велосипедного сарая.

Автор: bars80080 24.5.2010, 19:17
Цитата(LSD @  24.5.2010,  19:01 Найти цитируемый пост)
Это ты нашему гуру форматирования скажи:
Цитата(Logo @  14.5.2010,  20:53 Найти цитируемый пост)
тут нужно использовать пробелы, сабж об отступах перед блоками кода, вроде

эээ, махинация! я-то думаю, как так, ведь Лого другое отстаивает.

ты на цитату в том посте смотрел? там пробелы после знаков "равно" перед значением переменной, а ты запробелил отступы перед блоками кода. 

Автор: LSD 25.5.2010, 14:56
Цитата(bars80080 @  24.5.2010,  20:17 Найти цитируемый пост)
эээ, махинация! я-то думаю, как так, ведь Лого другое отстаивает.

ты на цитату в том посте смотрел? там пробелы после знаков "равно" перед значением переменной, а ты запробелил отступы перед блоками кода.

Сам ты махинация smile по цитате моя ссылка на уже существующую тему. Да и код не мой, а из одного крупного проекта.

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

В остальном одни минусы. Сложное форматирование одними табами не реализуется, и значит надо делать отступы табами, выравнивание пробелами. А поскольку IDE которые бы поддерживали подобный изврат скажем прямо не много, то заниматься форматированием придется в основном вручную. Учитывая что выравнивание идет пробелами, то жмакать на пробел надо будет не меньше. А с учетом того, что даже такой простой редактор как Notepad++ можно научить по табу вставлять нужное количество пробелов, то с форматированием отступы табами, выравнивание пробелами педалить возможно придется даже больше. Про то, что разные редакторы могут по разному обрабатывать табы, и значит форматирование может поехать, уже упоминали. Плюс есть такая штука как line wrapping. Например один эстет пишет код с большим количеством вложенных блоков при размере таба 2, а потом его открывает другой эстет у которого эстетический размер таба 8, так у него пол кода уедет за границу экрана. Он конечно не станет с этим мирится и быстренько устроит массовый line wrapping. А когда код откроет первый эстет, он увидит код в колоночку, абалденное зрелище smile 


В общем мое мнение таково: code style определяется автором проекта. И человеку со стороны, который лезтет с указаниями: а у вас тут отступы не те, имена переменных неправильно пишете, нужно просто указать http://foto.rambler.ru/public/my-strange-soul/_photos/26541715_nahujetovontuda/26541715_nahujetovontuda-web.gif.

Автор: bars80080 25.5.2010, 19:05
Цитата(LSD @  25.5.2010,  14:56 Найти цитируемый пост)
У табов только один плюс любой эстет у которого возникает нестерпимый butthurt от отступов несоответствующих его эстетическим представлениям о красивом коде, может это элементарно исправить изменив размер таба. 

В остальном одни минусы. Сложное форматирование одними табами не реализуется, и значит надо делать отступы табами, выравнивание пробелами. А поскольку IDE которые бы поддерживали подобный изврат скажем прямо не много, то заниматься форматированием придется в основном вручную. Учитывая что выравнивание идет пробелами, то жмакать на пробел надо будет не меньше. А с учетом того, что даже такой простой редактор как Notepad++ можно научить по табу вставлять нужное количество пробелов, то с форматированием отступы табами, выравнивание пробелами педалить возможно придется даже больше. Про то, что разные редакторы могут по разному обрабатывать табы, и значит форматирование может поехать, уже упоминали. Плюс есть такая штука как line wrapping. Например один эстет пишет код с большим количеством вложенных блоков при размере таба 2, а потом его открывает другой эстет у которого эстетический размер таба 8, так у него пол кода уедет за границу экрана. Он конечно не станет с этим мирится и быстренько устроит массовый line wrapping. А когда код откроет первый эстет, он увидит код в колоночку, абалденное зрелище 

вот текста много, и слова мне известные, но смысл ускользает как нашкодивший кот.
меня так и подмывает спросить: какие ваши доказательства?

ничего кроме одного примера кул-проггера (пусть даже и из крупного проекта /тем хуже проекту/), совершенно не согласующегося со словами Logo и твоей интерпретацией, я не видел.
зато я видел, что когда я получаю код, который мне не нравится по форматированию, то в случае с табами он быстро принимает нужный мне вид, by one click прямо скажем. а в случае с пробелами мне приходится тратить кучу времени на приведение его в порядок, иначе в глазах рассыпается его логика

Автор: Logo 12.6.2010, 15:53
Цитата

Logo, я уже прокомментировал это недоразумение.


Это ваш комментарий недоразумение. 

Множества пробелов в отступах - hardcode в чистом виде.

Автор: LSD 9.7.2010, 18:50
Цитата(bars80080 @  25.5.2010,  20:05 Найти цитируемый пост)
вот текста много, и слова мне известные, но смысл ускользает как нашкодивший кот.
меня так и подмывает спросить: какие ваши доказательства?

Многа букф ниасилил, да? smile 


Цитата(bars80080 @  25.5.2010,  20:05 Найти цитируемый пост)
ничего кроме одного примера кул-проггера (пусть даже и из крупного проекта /тем хуже проекту/), совершенно не согласующегося со словами Logo и твоей интерпретацией, я не видел.
зато я видел, что когда я получаю код, который мне не нравится по форматированию, то в случае с табами он быстро принимает нужный мне вид, by one click прямо скажем. а в случае с пробелами мне приходится тратить кучу времени на приведение его в порядок, иначе в глазах рассыпается его логика 

Рекомендую посмореть в зеркало smile 
Я пока от тебя тоже ни одного примера кода, который был бы ужасен при форматировании пробелами и прекрасен при форматировании табами не увидел. Заодно хотелось бы примеры IDE которые могут делать форматирование по Logo.

Автор: bars80080 9.7.2010, 19:03
Цитата(LSD @  9.7.2010,  18:50 Найти цитируемый пост)
Многа букф ниасилил, да?
ну, я хотя бы сразу ответил, а ты видать решил осилить мою фразу до конца?

Цитата(LSD @  9.7.2010,  18:50 Найти цитируемый пост)
Рекомендую посмореть в зеркало

там есть табы и пробелы?

Цитата(LSD @  9.7.2010,  18:50 Найти цитируемый пост)
Я пока от тебя тоже ни одного примера кода, который был бы ужасен при форматировании пробелами и прекрасен при форматировании табами не увидел. 

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


Цитата(LSD @  9.7.2010,  18:50 Найти цитируемый пост)
Заодно хотелось бы примеры IDE которые могут делать форматирование по Logo. 

делать отступы? или что-то особенное имел ввиду?

Автор: LSD 9.7.2010, 19:11
Цитата(bars80080 @  9.7.2010,  20:03 Найти цитируемый пост)
ну, я хотя бы сразу ответил, а ты видать решил осилить мою фразу до конца?

Вынужден огорчить твое ЧСВ, у меня есть и другие занятия кроме как с тобой спорить smile 


Цитата(bars80080 @  9.7.2010,  20:03 Найти цитируемый пост)
там есть табы и пробелы?

Там есть один товарищь который до сих пор не привел примера:
Цитата(LSD @  9.7.2010,  19:50 Найти цитируемый пост)
Я пока от тебя тоже ни одного примера кода, который был бы ужасен при форматировании пробелами и прекрасен при форматировании табами не увидел. Заодно хотелось бы примеры IDE которые могут делать форматирование по Logo.



Цитата(bars80080 @  9.7.2010,  20:03 Найти цитируемый пост)
да любой код, где для отступа применяется таб. нажал одну кнопку - он изменил величину, и всё, ты доволен

Цитата(LSD @  25.5.2010,  15:56 Найти цитируемый пост)
У табов только один плюс любой эстет у которого возникает нестерпимый butthurt от отступов несоответствующих его эстетическим представлениям о красивом коде, может это элементарно исправить изменив размер таба. 

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


Цитата(bars80080 @  9.7.2010,  20:03 Найти цитируемый пост)
делать отступы? или что-то особенное имел ввиду? 

Делат выравнивание используя табы и пробелы. Перечитай начало топика.


P.S. Надеюсь я ответил достаточно быстро smile 

Автор: bars80080 9.7.2010, 19:18
Цитата(LSD @  9.7.2010,  19:11 Найти цитируемый пост)
Вынужден огорчить твое ЧСВ, у меня есть и другие занятия кроме как с тобой спорить

не беспокойся, не ты один тут у меня в ногах


Цитата(LSD @  9.7.2010,  19:11 Найти цитируемый пост)
Так вот я к подобным эстетам не отношусь, я могу пережить код с отступом и 2 и 4 и 8

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


Цитата(LSD @  9.7.2010,  19:11 Найти цитируемый пост)
Там есть один товарищь который до сих пор не привел примера:

привёл, ты на него только что ответил


Цитата(LSD @  9.7.2010,  19:11 Найти цитируемый пост)
Делат выравнивание используя табы и пробелы. Перечитай начало топика.

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

Автор: Logo 9.7.2010, 19:59
Цитата

Делат выравнивание используя табы и пробелы. Перечитай начало топика.


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

Цитата

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


Уже три страницы болтовни, а реального примера где код с табами разъезжается, как не было, так и нет.

Автор: djamshud 10.7.2010, 03:24
>сказал, что для выравнивания идентификаторов по одной линии по вертикали, стоит использовать пробелы.

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

Код

class Class{
 void foo(int a,
          int b){
 }
};


И либо пиздец форматированию, либо трах с его поддержкой.

Автор: Natalina 20.7.2010, 13:46
Модератор: Сообщение скрыто.

Автор: LSD 27.4.2011, 18:35
И на хабре тему подняли
http://habrahabr.ru/blogs/programming/118204/
http://habrahabr.ru/blogs/programming/118208/
В обсуждении был очень хороший комментарий:
Цитата(Andrey2008)
Кажется я начинаю понимать, откуда такое моё несогласие с миром. Я в основном работал и работаю с унаследованным кодом. И мне совершенно не интересны теоретические и идеологические обоснования почему табы лучше. Я практик. Когда я беру код и вижу, что он разъехался, так по мне пробелы в 100 раз лучше. Никто никогда не заворачивается, что такое indentation, alignment. Просто 5-10 лет назад натабили и пошли дальше.

Автор: bars80080 27.4.2011, 19:42
Цитата(LSD @  27.4.2011,  18:35 Найти цитируемый пост)
Кажется я начинаю понимать, откуда такое моё несогласие с миром. Я в основном работал и работаю с унаследованным кодом. И мне совершенно не интересны теоретические и идеологические обоснования почему табы лучше. Я практик. Когда я беру код и вижу, что он разъехался, так по мне пробелы в 100 раз лучше. Никто никогда не заворачивается, что такое indentation, alignment. Просто 5-10 лет назад натабили и пошли дальше.

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

Автор: skyboy 27.4.2011, 21:24
LSD, я пока тему листал(вижу впервые) была мысля: ща кто-то некромантит после статьи на хабре. так и оказалось  smile 
в статье, кстати, офигенски первым же аргументов отделяется aligning и indentation. и вариант - "только пробелы для первого" и "только табы для второго" лично меня устраивает абсолютно. кроме того, что все равно будут люди, которые станут умудряться нарушать соглашение.
правда, у нас jlint в хуке на коммит запускается...(искать табы НЕ в начале строки и пробелы в начала - тут достаточно базовых знаний регулярок).

Автор: LSD 28.4.2011, 11:08
Цитата(skyboy @  27.4.2011,  22:24 Найти цитируемый пост)
в статье, кстати, офигенски первым же аргументов отделяется aligning и indentation. и вариант - "только пробелы для первого" и "только табы для второго" лично меня устраивает абсолютно. кроме того, что все равно будут люди, которые станут умудряться нарушать соглашение.

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

Для нормальной работы "табового рая" нужно чтобы средство разработки поддерживало его полностью. Та же IDEA поддерживает smart tab для Java, но для Javascript уже не поддерживает по человечески. А сколько удовольствия можно получить если придется организовывать этот smart tab в редакторе уровня Notepad, это же просто праздник какой-то smile 
Плюс табовые апологеты как-то скромно замалчивают вопрос с max line length. Возьмет C# и какую нибудь типичную функцию:
Код

namespace decl.  - indent 0
class decl.      - indent 1
method decl.     - indent 2
loop decl.       - indent 3
condition decl.  - indent 4

Итого при max line length = 80 и tab size = 8, получаем ширину внутреннего блока 48 символов. А изменив tab size на 2 получим - 72. Т.е. просто сменив tab size на предпочитаемый человек рискует получить 24 пустых знакоместа в конце, т.е. фактически треть ширины экрана.


Цитата(skyboy @  27.4.2011,  22:24 Найти цитируемый пост)
правда, у нас jlint в хуке на коммит запускается...(искать табы НЕ в начале строки и пробелы в начала - тут достаточно базовых знаний регулярок). 

И какая регулярка ловит такое?
Код

-->public void foo(String str,
-->-->-->-->-->....int i,

Автор: skyboy 28.4.2011, 12:41
Код

assertNotMatch(/^\t*[^\s]/, 'There are some spaces in begin of line');


Добавлено через 39 секунд
это не jlint. типа "псевдокод" smile

Автор: LSD 28.4.2011, 13:32
И что скажет эта регулярка на правильно отформатированный код:
Код

-->public void foo(String str,
-->................int i,

?
smile

Автор: skyboy 28.4.2011, 16:41
Цитата(LSD @  28.4.2011,  12:32 Найти цитируемый пост)
 на правильно отформатированный код

не расползающийся при любом параметре tab-to-spaces. но это не значит, что такую смесь можно считать стилистически правильной.
а так, да, регулярка работающая в любой момент времени только с одной строкой кода, никак не может провести анализ "оу, так оно же не расползается".
а надо ли?
если б проверка вынудила программиста вместо
Код

-->public void foo(String str,
-->................int i,

написать
Код

-->public void foo(
-->-->String str,
-->-->int i,

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

Автор: LSD 29.4.2011, 15:16
Цитата(skyboy @  28.4.2011,  17:41 Найти цитируемый пост)
но это не значит, что такую смесь можно считать стилистически правильной.

Как это нельзя? А кто тут говорил красивые слова про aligning и indentation, про табы для одного и пробелы для другого?


Цитата(skyboy @  28.4.2011,  17:41 Найти цитируемый пост)
а надо ли?
если б проверка вынудила программиста вместо
...
написать
...
стало бы оно хуже читаться? нельзя было бы отличить список параметров от имени функции?

Ну вот, тут и получается два варианта:
1. Изменить Code Conventions чтобы форматирование легко и приятно ложилось на табы.
2. Заставить всех разработчиков использовать единый отступ, но при этом получить возможность использовать любой aligning (в рамках Code Conventions конечно). А проверить что код форматирован пробелами еще проще, чем табами.

Вот возьмем такой код:
Код

var = someMethod1(longExpression1,
                  someMethod2(longExpression2,
                              longExpression3));

смотрится нормально, а теперь если его отформатировать табами как ты предлагал:
Код

var = someMethod1(longExpression1,
    someMethod2(longExpression2,
        longExpression3));

смотрится менее читабельно.

Понятно, что любое решение не лишено недостатков. Но на мой взгляд невозможность подстроить величину отступа под себя, меньшее зло, чем те пробелы которые вызывает использование табов. Если размер отступа 4, а не 2
Цитата(skyboy @  28.4.2011,  17:41 Найти цитируемый пост)
стало бы оно хуже читаться?

- нет не стало бы. За пару дней привыкнешь и перестанешь замечать smile Зато код всегда выглядит одинаково, не разъезжается и не требует сложных проверок при комитах.

Автор: Logo 14.6.2011, 10:49
user posted image

 smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)