среда, 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 комментариев:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    ОтветитьУдалить
  11. На java чтоль пишете?

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

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

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

    ОтветитьУдалить