Стандарты кодирования GNU
Стандарты кодирования 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[1]); 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.[источник не указан 3164 дня]
Существует другая проблема портирования: несмотря на тот факт, что программа должна запускаться на различных типах процессоров, стандарт говорит, что GNU не поддерживает и не будет поддерживать 16-битные системы, но поддержка всех различных 32-х и 64-битные систем абсолютно необходима.
См. также
- Gnits Standards
Внешние ссылки
- Стандарты оформления кода GNU на сайт GNU
- Eclipse-специфичный стиль форматирования кода по GNU стандартам оформления кода