На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила трёх "С"
Пожалуйста,
1. Соблюдайте правила Форума.
2. Слушайте советы Модераторов.
(например, http://forum.sources.ru/index.php?act=ST&f=7&t=80382 )
3. Сверяйтесь с учебником по Великому и Могучему
  
> Стили записи кода , И использование indent
    В свое время тема поднималась, но не нашла должного продолжения. Исправляем...

    В современном мире, к счастью, есть такая вещь как разделение кода, распределенный проект, etc.
    Т.е. когда толпа народа берет какую-то задачу и занимается ее решением, живя в разных городах, странах, на разных
    континентах. Вот только один минус -- при получении из того же репозитария CVS кода, Вы можете с удивлением обнаружить
    что код, хоть и компилится и работает, но вот что-то в стиле написания Ваш глаз "царапает"... Что делать-то? Попробовать
    с этим разобраться, т.к. если код "чистый" и Вам он нужен (Вы как-то решили его развивать или приспособить для своих задач),
    то не стоит проклинать все и вся, гораздо проще использовать утилиту indent для переформатирования кода. Собственно
    говоря, здесь дело в том, как Вы ставите фигурные скобки, как используете проблы и символы табуляции для организвции
    отступов в коде (от еачала строки, вокруг символов, вокруг операторов ветвления типа "if", "while"), как именуете переменные,
    функции, как относитесь к множественным определениям на одной строке... Короче, "косметика", без которой глаза
    сломаешь.

    Более того! Дополнительную "радость" могут принести громогласные заявления авторов того или иного проекта о "еритичности"
    того или иного стиля написания программного кода. См. к примеру, /usr/src/~linux/Documentation/CodyngStyle.
    Но ведь... Это дело мое, а никак не кого-то еще как мне писать код на моей машине. Конечно, если я вдруг захочу, скажем,
    опубликовать что-то из своего кода на "ядерную" тематику, то я буду обязан привести свой код в соответствие с
    общими требованиями, обозначенными в этом документе. В любом случае убрать оттуда комментарии на "русском командно-матерном"
    и перекодировать текст для соответствия стилю.

    Вся проблема в том, что разные люди применяют для написания кода различные технологические решения. К примеру, в свое
    время народ писал код, пользуясь Emacs или vi, с дохленького терминала, подключенного по мопеду на 9600 к пробкотрону
    за тридевять земель от местоположения автора. В этом случае, ясное дело, автор использовал стиль, не требующий прокруток
    терминала, более сжатый по вертикали. На сегодняшний день это малоприменимо, т.к. тот же vi я стартую на своей машине.
    Таким образом, можно перейти к форме записи, при которой фигурные скобки располагаются, скажем, по одной на строке. На
    мой взгляд это более наглядная форма записи, при которой мне нет нужды шарить глазами по экрану в поисках открывающей
    фигурной скобки... Дело Ваше, короче говоря... На мой взгляд, любой стиль лучше чем отсутствие всякого стиля.

    Итак, стили записи:
    1. Стиль Кернигана и Ричи.
    Инако рекомый 1TBS -- единственный правильный стиль разметки. Кажется, так это называется.
    ExpandedWrap disabled
       
      while(x<0) {
          for(i=0; i<MAX_VAL; i++){
              ....
          }
      }

    Ну, может, кому и нравится... По крайней мере, судя по приведенному выше документу, kernel-hacker'ам однозначно.

    2. GNU-style.
    ExpandedWrap disabled
       
      while (x<0)
          {
              for (i=0; i<MAX_VAL; i++)
              {
                  ....
              }
          }

    Если приглядеться, то большая часть исходников для утилит GNU написана с применением этого стиля разметки.

    3. Стиль BSD.
    Инако рекомый стилем Allmаn'а, т.к. именно он написал большую часть утиля для BSD.
    ExpandedWrap disabled
       
      while (x<0)
      {
          for (i=0; i<MAX_VAL; i++)
          {
              ....
          }
      }


    Есть еще гора всяких-разных "промежуточных" стилей, каждый из которых имеет своих защитников и фанатиков, к примеру,
    стиль GNOME (то, что генерирует GLADE, как раз оформлено в таком стиле). И лично мне не сильно хотелось бы чтобы Вас
    отправили на костер только за то, что Вы пишете свой код не так, как это принято кем-то.

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

    ExpandedWrap disabled
       
      while ( x < 0 )
      {
          for ( i < 0; i < MAX_VAL; i++ )
          {
              ....
          }
      }


    Да, Вы не ошиблись -- я использую отступы в 4 пробела, т.к. очень уж длинные строки попадаются и просто лень
    мотать экран то по вертикали, то по горизонтали. Vi соответствующим образом "предупрежден". И не вмешивается
    в установку ts.

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

    В indent есть преопределенные стили.
    По умолчанию стиль GNU:
    ExpandedWrap disabled
      $ indent -gnu file.c -o file.out.c

    Есть стиль K&R:
    ExpandedWrap disabled
      $ indent -kr file.c > file.out.c

    Есть стиль BSD (original indent):
    ExpandedWrap disabled
      $ cat file.c | indent -orig -o file.out.c


    Вы сами можете создать свой стиль и описать его в файле $HOME/.indent.pro. И, соответсвенно использовать
    именно свой стиль перед разборками с чьими-то исходниками. После того, как Вы переформатировали исходники,
    спокойненько грузите их в любимый vi и... с Богом. :)

    Обратно переформатировать вовсе не сложно -- см. выше. Подробнее обо всем этом -- man indent[/i] или
    [b]info indent
    .
      Мне ближе стиль GNU, собственно так пишу уже давно, пробелы хороши при вызове функций между параметрами.

      the_Shadow, ты не написал про регистр, т.е все константы верхним, а всё остальное нижним
      чтоб не как в MS "американские горки".
        Лично мое мнение, стиль кодинга ядра способствует не только читабельности кода, но и лаконичности изложения. (Когда мне пришлось разгребать какой-то мохнатый код на PHP (который довольно сходен с C)), я чуть на себе волосы не порвал: когда в MC 80x25 попробовал редактировать это чудо.

        Если уж делиться своим стилем, то я использую 1TBS с одним отличием: закрывающие фигурные скобки ставлю вровень с операторами блока, а не открывающим блок оператором. Не спрашивайте почему -- просто мне так удобно, но хез, может, кому-то еще тоже удобным будет.
          Цитата ASMProgrammer
          Если уж делиться своим стилем, то я использую 1TBS с одним отличием: закрывающие фигурные скобки ставлю вровень с операторами блока, а не открывающим блок оператором. Не спрашивайте почему -- просто мне так удобно, но хез, может, кому-то еще тоже удобным будет.

          Аналогично. B)
            В anjuta есть автоматический преобразователь стиля написания кода, там до хрена всяких вариантов
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0273 ]   [ 15 queries used ]   [ Generated: 26.04.24, 22:51 GMT ]