
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[34.238.189.240] |
![]() |
|
Сообщ.
#1
,
|
|
|
В свое время тема поднималась, но не нашла должного продолжения. Исправляем...
В современном мире, к счастью, есть такая вещь как разделение кода, распределенный проект, etc. Т.е. когда толпа народа берет какую-то задачу и занимается ее решением, живя в разных городах, странах, на разных континентах. Вот только один минус -- при получении из того же репозитария CVS кода, Вы можете с удивлением обнаружить что код, хоть и компилится и работает, но вот что-то в стиле написания Ваш глаз "царапает"... Что делать-то? Попробовать с этим разобраться, т.к. если код "чистый" и Вам он нужен (Вы как-то решили его развивать или приспособить для своих задач), то не стоит проклинать все и вся, гораздо проще использовать утилиту indent для переформатирования кода. Собственно говоря, здесь дело в том, как Вы ставите фигурные скобки, как используете проблы и символы табуляции для организвции отступов в коде (от еачала строки, вокруг символов, вокруг операторов ветвления типа "if", "while"), как именуете переменные, функции, как относитесь к множественным определениям на одной строке... Короче, "косметика", без которой глаза сломаешь. Более того! Дополнительную "радость" могут принести громогласные заявления авторов того или иного проекта о "еритичности" того или иного стиля написания программного кода. См. к примеру, /usr/src/~linux/Documentation/CodyngStyle. Но ведь... Это дело мое, а никак не кого-то еще как мне писать код на моей машине. Конечно, если я вдруг захочу, скажем, опубликовать что-то из своего кода на "ядерную" тематику, то я буду обязан привести свой код в соответствие с общими требованиями, обозначенными в этом документе. В любом случае убрать оттуда комментарии на "русском командно-матерном" и перекодировать текст для соответствия стилю. Вся проблема в том, что разные люди применяют для написания кода различные технологические решения. К примеру, в свое время народ писал код, пользуясь Emacs или vi, с дохленького терминала, подключенного по мопеду на 9600 к пробкотрону за тридевять земель от местоположения автора. В этом случае, ясное дело, автор использовал стиль, не требующий прокруток терминала, более сжатый по вертикали. На сегодняшний день это малоприменимо, т.к. тот же vi я стартую на своей машине. Таким образом, можно перейти к форме записи, при которой фигурные скобки располагаются, скажем, по одной на строке. На мой взгляд это более наглядная форма записи, при которой мне нет нужды шарить глазами по экрану в поисках открывающей фигурной скобки... Дело Ваше, короче говоря... На мой взгляд, любой стиль лучше чем отсутствие всякого стиля. Итак, стили записи: 1. Стиль Кернигана и Ричи. Инако рекомый 1TBS -- единственный правильный стиль разметки. Кажется, так это называется. ![]() ![]() while(x<0) { for(i=0; i<MAX_VAL; i++){ .... } } Ну, может, кому и нравится... По крайней мере, судя по приведенному выше документу, kernel-hacker'ам однозначно. 2. GNU-style. ![]() ![]() while (x<0) { for (i=0; i<MAX_VAL; i++) { .... } } Если приглядеться, то большая часть исходников для утилит GNU написана с применением этого стиля разметки. 3. Стиль BSD. Инако рекомый стилем Allmаn'а, т.к. именно он написал большую часть утиля для BSD. ![]() ![]() while (x<0) { for (i=0; i<MAX_VAL; i++) { .... } } Есть еще гора всяких-разных "промежуточных" стилей, каждый из которых имеет своих защитников и фанатиков, к примеру, стиль GNOME (то, что генерирует GLADE, как раз оформлено в таком стиле). И лично мне не сильно хотелось бы чтобы Вас отправили на костер только за то, что Вы пишете свой код не так, как это принято кем-то. Хотя, если честно, то Вашему покорному слуге сугубо монопениссуальны все различия. Я использую свой стиль записи, при котором между символами есть пространство "немного подумать". Текст не сливается в пятно даже при рассматривании его издалека, области видимости операторов ясно видны и текст так же ясно просматривается. Причем, в чем я абсолютно не уверен, так это в том, что именно я этот стиль придумал, т.к. по всей видимости, кто-то уже пользовался этим стилем разметки еще когда я и не сильно задумывался о стилях разметки. И, к стати, я не уверен что именно этот стиль лучше всех. Меня он устраивает и -- ладно. ![]() ![]() while ( x < 0 ) { for ( i < 0; i < MAX_VAL; i++ ) { .... } } Да, Вы не ошиблись -- я использую отступы в 4 пробела, т.к. очень уж длинные строки попадаются и просто лень мотать экран то по вертикали, то по горизонтали. Vi соответствующим образом "предупрежден". И не вмешивается в установку ts. Приведение к какому-то стилю. Мне не сильно хочется чтобы мое мясо горело на костре. Поэтому, проконсультировавшись с исходной версией, определившись какой же там стиль применяется, я напрягаю indent на то, чтобы расставить все по местам. Сделаем через indent разметку в разных стилях. В indent есть преопределенные стили. По умолчанию стиль GNU: ![]() ![]() $ indent -gnu file.c -o file.out.c Есть стиль K&R: ![]() ![]() $ indent -kr file.c > file.out.c Есть стиль BSD (original indent): ![]() ![]() $ cat file.c | indent -orig -o file.out.c Вы сами можете создать свой стиль и описать его в файле $HOME/.indent.pro. И, соответсвенно использовать именно свой стиль перед разборками с чьими-то исходниками. После того, как Вы переформатировали исходники, спокойненько грузите их в любимый vi и... с Богом. ![]() Обратно переформатировать вовсе не сложно -- см. выше. Подробнее обо всем этом -- man indent[/i] или [b]info indent. |
Сообщ.
#2
,
|
|
|
Мне ближе стиль GNU, собственно так пишу уже давно, пробелы хороши при вызове функций между параметрами.
the_Shadow, ты не написал про регистр, т.е все константы верхним, а всё остальное нижним чтоб не как в MS "американские горки". |
Сообщ.
#3
,
|
|
|
Лично мое мнение, стиль кодинга ядра способствует не только читабельности кода, но и лаконичности изложения. (Когда мне пришлось разгребать какой-то мохнатый код на PHP (который довольно сходен с C)), я чуть на себе волосы не порвал: когда в MC 80x25 попробовал редактировать это чудо.
Если уж делиться своим стилем, то я использую 1TBS с одним отличием: закрывающие фигурные скобки ставлю вровень с операторами блока, а не открывающим блок оператором. Не спрашивайте почему -- просто мне так удобно, но хез, может, кому-то еще тоже удобным будет. |
Сообщ.
#4
,
|
|
|
Цитата ASMProgrammer Если уж делиться своим стилем, то я использую 1TBS с одним отличием: закрывающие фигурные скобки ставлю вровень с операторами блока, а не открывающим блок оператором. Не спрашивайте почему -- просто мне так удобно, но хез, может, кому-то еще тоже удобным будет. Аналогично. B) |
Сообщ.
#5
,
|
|
|
В anjuta есть автоматический преобразователь стиля написания кода, там до хрена всяких вариантов
|