среда, 1 декабря 2010 г.

Кодинг стайл - 3 пробела...

Не понимаю, откуда в программистском сообществе такая нелюбовь к табуляциям?

Взять к примеру GNU coding style. Вертикальное пространство они никак не экономят, скобки пишут на новых строчках. Зато в горизонтальном плане почему-то экономят.

Или вот Python Style Guide вообще не рекомендует использовать табы, хотя и не запрещает как некоторые.

Собственно пытался освоить какую нибудь IDE...

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

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

Может я просто неправильно редактирую? Я могу переучиваться, я уже почти научился переключать русский/английский разными клавишами. :) Но с IDE у меня пока не ладится. Kate от меня ничего не требует, и свои правила не насаждает.

Вообще я думаю что табуляции гораздо удобнее пробелов.

Некоторые говорят, что отступы в 8 символов приводят к слишком широкому тексту. Но ведь если глубина отступов превышает 3 - пожалуй у вас слишком большая и глубокая функция. А с другой стороны размер табуляции можно настроить... настройте на 4 или на 2. Хотя, по моему, 8 - вполне выразительно.

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

И получается, что автодополнение мне почти что пофиг, могу обойтись и без него. А вот к такие мелочи сильно достают. Просматривал я разные IDE больше в плане рефакторинга. Но как-то скудно там все в этом плане.

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

11 коммент.:

Flegmatic комментирует...

Табы не любят из-за:
1) Проблем с форматированием отступов в середине строк.
Например, при таб=8:
aaaaaaaaa bbb
aa bbbb
То же при таб=4:
ааааааааа bbb
aa bbbb
Такое часто встречается в комментариях, определении макросов и пр.
2) Проблем с нестандартными отступами. Например, я хочу, чтобы длинный список аргументов функции, переносимый на следующую строку, начинался точно под первым символом первого аргумента. С табами этого в общем случае не сделаешь.

Flegmatic комментирует...

Черт, Блогспот съел мои пробелы. Примеры к п. 1 в предыдущем комменте должны быть такими:
при таб=8
aaaaaaaaa_______bbb
aa______________bbbb
при таб=4
aaaaaaaaa___bbb
aa______bbbb

Andrey Valyaev комментирует...

Вообще тема конечно холиварная. :)

1) Не нужно делать отступы в середине строк... выравнивать их при последующей модификации - неоправданный гемор.

2) Выравнивания под скобочками доставляют конечно меньше гемора при поддержке но тоже мастдай :) Помню применение такого стиля с табуляциями под VS, где табуляция настроена на 4) улетал в неизведанную даль с нормальной табуляцией. :)

Вообще это можно простить с автоиндентацией, хотя стиль тоже отрицательный.

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

Вообще, если не рассчитывать на автоиндентацию, которая облегчает не всегда и не все, то табы юзабельнее значительно.

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

Вообще я как-то ко всяким хоткеям не приучен особо. мне проще несколько раз нажать del, чем выделить и один раз удалить. :) Надо переучиваться.

Alexander Yastrebov комментирует...

Насчет netbeans (правда касательно java): там есть горячая клавиша
Alt+Shift+F которая форматирует все однообразно. Быстро привыкаешь и весь код выглядит одинаково. Правда это не решает проблемы с табами :)

Andrey Valyaev комментирует...

Может эта комбинация и в других языках работает... в питоне вот проверил - работает...

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

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

Я сам не использую java. судя по всему для нее много чего есть, и с рефакторингом в java хорошо... но я на C++ пишу... и вот на питоне немного.

А в связи с жабой, которая душит Оракл в последнее время - стоит подумать. Может java сейчас и не столь перспективна? :)

Анонимный комментирует...

Попробуй ещё Eclipse + C/C++ development tools.
У меня в своё время устоялось такое правило форматирования кода:
1. Ширина табуляции - 4 символа. Не много, и не мало, в самый раз.
2. Табуляция допускается только в начале строки, до первого отличного от пробела/табуляции символа. Всё остальное дополняется пробелами. В таком случае ничего не едет.
3. Если необходимо сделать некратный 4 пробел, делается табуляция до нужной позиции, после чего дополняется не более чем тремя пробелами.

Andrey Valyaev комментирует...

Да не, я вообще не люблю особо с отступами мудрить. в начале строки табы, а в строке - поминимуму. либо один пробел либо один таб (если комментарий какой отодвинуть).

IDE у меня не приживаются потому наверное, что ущемляют мою свободную волю. :) Навязывая какие-то свои соглашения.

Алексей Марков комментирует...

все фломастеры на вкус разные - вопрос договоренности. А все редакторы настраиваются.

Анонимный комментирует...

Я тоже за табуляцию. Куча пробелов - это просто глупо.

Unknown комментирует...

IntellijIDEA — отличная IDE!
А использование табуляций — моветон.

Andrey Valyaev комментирует...

На java чтоль пишете?

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

Мы разрабатываем ПО под юникс, на c++. Собственно выбор инструментов, в том числе и операционной системы - личное дело каждого. Пусть люди работают как удобнее.

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