*** ВНИМАНИЕ: Блог переехал на другой адрес - demin.ws ***

понедельник, 11 мая 2009 г.

Табуляция

Символы табуляции в исходниках — это бесконечное зло. А зло в квадрате, когда табуляция используется не только для отступов слева, но как разделитель (например, между аргументами функций, в теле блоков комментариев и т.д.). Ничего, кроме криков из другого конца комнаты типа "какая б... опять дописала кусок в моем неприкосновенном исходнике на С в Эклипсе, используя пробелы вместо табов, так что у меня тут в vi съехали все отступы?". И тут оба неправы. Первый в том, что не использовал тип отступов, принятый уже в существующем документе, а второй — в том, что использовал табуляцию изначально. Все шоколадно и солнечно, когда все сидят в Студии, но когда один использует vi, другой Студию, третий - FAR и т.д. (а это, увы, реалии много-платформенной разработки), то невозможно, чтобы все следовали правилу. Никто не любит соблюдать неудобные правила.

Лично я очень спокоен на тему стиля в целом и длины отступов в частности (лишь бы выглядело читабельно и соответствовало принятому для проекта соглашению), но вот табуляция — это как красная тряпка.

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

8 комментариев:

  1. А теперь тоже самое для: FAR (F4), UltraEdit, Notepad++, vi, vim, kedit, gnome-editor. Это только редакторы, которые я помню из у нас использующихся. Эклипс хорош для Явы, но к сожалению в мире С и С++ сложно кого-то убедить, что Эклипс - это самая лучшая среда для работы. Поэтому народ работает там, где ему удобнее.

    ОтветитьУдалить
  2. А чем плоха табуляция, т.е. почему нельзя использовать ее во всех перечисленных редакторах? Тем что длинна отступов для табуляции может различаться в таких случаях? но по идее этот параметр в нормальном редакторе должен быть настраиваемым.
    Сам работаю в конторе, где все используют MSVS, поэтому проблема для меня неочевидна :)

    ОтветитьУдалить
  3. Те, у кого таб выглядит на 8 позиций никогда не будет доволен исходником, созданным автором с табом в 3 позиции. И тем более никто не будет подстраивать редактор под каждый исходник, так как это утомляет, и все на это забивают.

    Я же говорил, если все сидят в Студии, проблем нет. ;-)

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

    Может кто знает, автоматический расстановщик табов, пробелов, переносов строк и т.д. для C++?

    Кстати в QtCreator 1.1 тоже: Ctrl+A, Ctrl+I

    ОтветитьУдалить
  5. "Все шоколадно и солнечно, когда все сидят в Студии"

    И то не всегда. Я одно время работал в команде, в которой ребята настраивали Студию каждый под себя. Были и такие, которые меняли размер таба. Например, один товарищ установил размер таба равным одному символу. Всё бы было нормально, если бы он везде ставил табы. Но в его коде табы и пробелы существовали вместе, и соотношение было примерно 50 на 50. В одной строке в качестве отступа запросто могло быть "таб-пробел-таб". Можете себе представить, как это выглядело, когда его код открывали другие программисты.

    По поводу автоматического расстановщика табов, пробелов, переносов строк и т.д - vim это все умеет, как и Студия, кажется. Вообще современные IDE и многие редакторы это умеют.

    ОтветитьУдалить
  6. Как вариант можно настроить AStyle перед очередным коммитом производить обработку исходников

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