Стандарты кодирования GNU — это набор правил и рекомендаций для написания программ, совместимых с GNU. Стандарты кодирования GNU были написаны Ричардом Мэттью Столлманом и другими волонтерами проекта GNU. Документ стандарта является частью проекта GNU и доступен на web-сайте GNU. Таким образом он фокусируется на написании свободного программного обеспечения для GNU на языке C, большая часть которого может быть применена более широко. В частности, проект GNU поощряет своих участников, которые пытаются следовать стандартам независимо от того, написаны ли их программы на C или нет. Стиль форматирования кода C известен внутри движения свободного программного обеспечения, но, разумеется, каждый может следовать ему по-своему.

Форматирование кода Стандарты кодирования GNU точно определяют, как форматировать большинство конструкций языка программирования C. Здесь приведен характерный пример: int main (int argc, char *argv[]) { struct gizmo foo;

fetch_gizmo (&foo, argv);

check: if (foo.type == MOOMIN) puts ("It's a moomin."); else if (foo.bar < GIZMO_SNUFKIN_THRESHOLD / 2 || (strcmp (foo.class_name, "snufkin") == 0) && foo.bar < GIZMO_SNUFKIN_THRESHOLD) puts ("It's a snufkin."); else

char *barney; /* Pointer to the first character after the last slash in the file name. */ int wilma; /* Approximate size of the universe. */ int fred; /* Max value of the `bar' field. */

do

frobnicate (&foo, GIZMO_SNUFKIN_THRESHOLD, &barney, &wilma, &fred); twiddle (&foo, barney, wilma + fred);

while (foo.bar >= GIZMO_SNUFKIN_THRESHOLD);

store_size (wilma);

goto check;

return 0; } Последовательное структурированное расположение блоков операторов (с отступами) — отличительная черта форматирования в стиле GNU С; также как и обязательный пробел перед скобками. Во всём отформатированном коде по стилю GNU каждая закрывающая фигурная, круглая или квадратная скобки находятся на одинаковом отступе от начала экрана с соответствующими открывающими скобками.

Можно полагаться на GNU Emacs в вопросах форматирования кода в стиле GNU.

Комментарии Стандарты придают особое значение комментариям на английском языке:Пожалуйста, пишите комментарии в программе GNU на английском, потому что английский является одним из языков, который понимают программисты практически во всех странах. Если Вы не владеете письменным английским в достаточной степени, пожалуйста, пишите комментарии на английском настолько хорошо, насколько у Вас это получается, затем попросите других людей помочь переписать их. Если Вы не можете писать комментарии на английском, пожалуйста, найдите кого-нибудь для работы с Вами и перевода Ваших комментариев на английский.Комментарии должны состоять из завершенных, написанных прописными буквами предложений, перед которыми находятся два пробела (чтобы Emacs знал, где начинается одно и заканчивается другое предложение).

Для длинных или трудноразрешимых условных выражений препроцессора каждая из директив #else и #endif должны иметь комментарий, объясняющий условие для кода ниже (для #else) или выше (для #endif).

Файлы Стандарт требует, чтобы все программы были способны функционировать, когда /usr и /etc смонтированы на чтение. Поэтому файлы, которые модифицируются для внутренних целей (файлы для записи информации, файлы блокировок, временные файлы, и т. д.) не должны сохраняться в /usr или /etc. Исключение сделано для программ, в задачи которых входит обновление системных конфигурационных файлов в /etc. Другое исключение сделано для сохранения файлов в каталоге, когда пользователь явно просит модифицировать файл в нём.

Портируемость Стандарты оформления кода GNU ставят вопрос портирования таким образом: портируемость в мире Unix означает 'между Unix-системами'; в программе GNU эта разновидность портируемости желательна на высоком качестве, но не обязательна.

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

Существует другая проблема портирования: несмотря на тот факт, что программа должна запускаться на различных типах процессоров, стандарт говорит, что GNU не поддерживает и не будет поддерживать 16-битные системы, но поддержка всех различных 32- и 64-битных систем абсолютно необходима.

См. также Gnits Standards

Внешние ссылки Стандарты оформления кода GNU на сайт GNU Eclipse-специфичный стиль форматирования кода по GNU стандартам оформления кода

Категория:Культура движения за свободное программное обеспечение Категория:Проект GNU Категория:Исходный код