LINUX.ORG.RU
ФорумTalks

Какими должны быть отступы в коде? Пусть начнется битва!

 , ,


0

2

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

Инфографика о том, каким должен быть отступ в коде, и почему он должен быть таким.

Кто-то что-то хочет возразить?

★★★★★
Ответ на: комментарий от Psych218

Какая-то теоретическая база под этим есть?

Да, есть. Х. Боумен - Графическое представление информации. В словаре форм имеется такое понятие как линия. Линия имеет свою толщину. Строчки кода в европейских языках представляются как линии. В нашем случае, толщина линии - это, упрощенно говоря, периодичность повторения строк, условно - чуть больше, чем высота прописной буквы. (Мы рассматриваем отступы, поэтому не берем за толщину линии высоту строчных букв, что было бы естественно как минимум для кириллицы и латиницы).

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

Примем, что отступ - это знак, сформированный отрицательным пространством. Согласно оптимальным условиям различия и опознавания знаков (Справочник по инженерной психологии, СССР, 1982), простые условия - это когда величина контраста размера от опорного размера элемента составляет 75%. (в квадратиках - это значит, что достаточно три квадратика из четырех). По графику зависимости коэффициента декорреляции, при длине строки около 50 символов, получаем коэффициент 0.85. Это значит, что для получения простых условий при работе с текстом программы, нам нужен контраст 0.75/0.85=0.88. Это практически единица (чуть меньше). Вспомним, что мы приняли высоту отступа за межстрочное расстояние, так как у нас роль отступа выполняет отрицательное пространство. Таким образом, для комфортной работы нам нужна ширина отступа минимум в 0.88 от высоты линии. Одним пробелом такой ширины не добиться, ибо при относительных размерах знакоместа 1:2, ширина пробела - это 0.5 от высоты. Получаем, что единственное ближайшее значение - 2 пробела.

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

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

По сабжу: 3-4 пробела. Верстальщикам табами шириной 4 гореть в аду, грепая в консоли свои выхлопы, шириной 8 — чинить чувство прекрасного.

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

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

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

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

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

Да, предвидя дальнейшие вопросы скажу, что мы рассматриваем минимально необходимый контраст. Любители 4-х пробелов получают ~200% контраста размеров при необходимом значении в 75%. У них и итоговое значение получится больше единицы, и это допустимо, да только избыточно.

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

gofmt и мне без разницы.

beastie ★★★★★
()

пишу код так, как принято у работодателя.

Если принято 2 пробела в питоне, то мне плевать на pep8.

Для себя - есть гайдлайны, где все описано.

poison1456
()

в 13 лет писал код на своём первом языке mIRC, встроенный текстовый редактор использует отступ — два пробела. с тех пор так и повелось.

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

Визуально нравятся отступы 4 пробела.

invy ★★★★★
()

Табуляциями, ибо ее длину можно настроить по вкусу. 2 пробела мало.

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

табы для отступов (indent), пробелы для выравнивания (align) ширину таба выбирайте какую душе угодно

+100500!

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

Это вывод параметров. Можно вывести полный список значений, можно — полный список обозначений (без значений), можно — определенную группу, а можно и конкретные параметры. Поэтому-то так дофига if'ов.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Sadler

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

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

Это не работает, так как требует специфической настройки редактора, да и не каждый редактор так настроишь.

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

Все время натыкаюсь на проекты, где табы перемежаются с пробелами

Это проблема проектов и писателей, которые туда писали. У нас такого не было. На гите висел хук с вызовом «порукамдавалки». Ты и коммит хрен сделаешь пока не исправишь отступы и вообще все прочее, вплоть до именно одного пробела после иф и перед скобкой.

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

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

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

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

Отступ шириной в 8 символов (не важно, пробелов или один таб) в C. И ограничение (разумное) на 80 символов. Это автоматически помогает избавиться от функций на триста строк с вложенностью больше трех уровней. В остальных языках согласно гайдлайнам.

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