Стандарты кодирования GNU - GNU coding standards
Эта статья включает в себя список общих Рекомендации, но он остается в основном непроверенным, потому что ему не хватает соответствующих встроенные цитаты.Сентябрь 2009 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
В Стандарты кодирования GNU представляют собой набор правил и рекомендаций по написанию программы которые работают последовательно в GNU система. Стандарты кодирования GNU были написаны Ричард Столмен и другие добровольцы проекта GNU. Документ стандартов является частью Проект GNU и доступен на сайте GNU. Хотя он ориентирован на письмо бесплатно программное обеспечение для GNU в C, многое из этого можно применить в более общем плане. В частности, проект GNU поощряет своих участников всегда стараться следовать стандартам - независимо от того, реализованы ли их программы на C.
Форматирование кода
Стандарты кодирования GNU точно определяют, как форматировать большинство Язык программирования C конструкции. Вот характерный пример:
intглавный (int argc, char *argv[]){ структура штуковина фу; fetch_gizmo (&фу, argv[1]); проверить: если (фу.тип == MOOMIN) ставит ("Это муми-тролль".); еще если (фу.бар < GIZMO_SNUFKIN_THRESHOLD / 2 || (strcmp (фу.class_name, "snufkin") == 0) && фу.бар < GIZMO_SNUFKIN_THRESHOLD) ставит ("Это snufkin".); еще { char *Барни; / * Указатель на первый символ после последняя косая черта в имени файла. * / int Wilma; / * Приблизительный размер Вселенной. * / int Фред; / * Максимальное значение поля `bar '. * / делать { заморозить (&фу, GIZMO_SNUFKIN_THRESHOLD, &Барни, &Wilma, &Фред); вертеться (&фу, Барни, Wilma + Фред); } пока (фу.бар >= GIZMO_SNUFKIN_THRESHOLD); store_size (Wilma); идти к проверить; } возвращаться 0;}
Последовательная обработка блоков как операторов (для целей отступов) - очень отличительная черта стиля форматирования кода GNU C; как обязательный пробел перед круглыми скобками. Весь код, отформатированный в стиле GNU, имеет свойство, состоящее в том, что каждая закрывающая фигурная скобка, скобка или круглые скобки Направо соответствующего открывающего ограничителя или в том же столбце.
В качестве общего принципа GNU Emacs можно считать[кем? ] надежный авторитет в области стиля форматирования кода GNU. Таким образом, желательно[согласно кому? ] что любой фрагмент кода, который выглядит некрасиво при отступе Emacs, преобразован в более дружественную для Emacs форму - например, путем вставки дополнительных круглых скобок.
Разделение длинных строк
«Когда вы разбиваете выражение на несколько строк, разбивайте его перед оператором, а не после него».[1]
Например:
если (foo_this_is_long && бар > победить (Икс, у, z) && оставшееся_условие)
Комментарии
В стандартах особо подчеркивается важность Английский язык Комментарии:
Пожалуйста, пишите комментарии в программе GNU на английском языке, потому что английский - это тот язык, который могут читать почти все программисты во всех странах. Если вы плохо пишете по-английски, напишите, пожалуйста, комментарии на английском как можно лучше, а затем попросите других помочь их переписать. Если вы не можете писать комментарии на английском языке, найдите кого-нибудь, кто будет работать с вами и переведет ваши комментарии на английский.
Комментарии должны состоять из полных предложений с заглавной буквы, за каждым из которых следует два пробела (чтобы Emacs мог сказать, где заканчивается одно предложение и начинается следующее).
Для длинных или сложных условных выражений препроцессора каждые #еще
и #endif
должен иметь комментарий, объясняющий условие для кода ниже (для #еще
) или выше (для #endif
).
Файлы
Стандарты требуют, чтобы все программы могли работать, когда / usr
и /так далее
находятся установленный только для чтения. Таким образом, файлы, которые изменяются для внутренних целей (файлы журналов, файлы блокировки, временные файлы и т. Д.), Не должны храниться ни в одной из них. / usr
или же /так далее
. Исключение составляют программы, задачей которых является обновление файлов конфигурации системы в /так далее
. Другое исключение сделано для хранения файлов в каталоге, когда пользователь явно попросил изменить файл в том же каталоге.
Портативность
Стандарты кодирования GNU определяют проблему переносимости следующим образом: переносимость в Unix мир означает «между Unix»; в программе GNU такая переносимость желательна, но не жизненно важна.
В соответствии со стандартом проблемы переносимости очень ограничены, поскольку программы GNU предназначены для компиляции с одним компилятором, Компилятор GNU C, и работать только в одной системе - системе GNU.
Однако есть одна форма проблемы переносимости, и это тот факт, что стандарт ясно дает понять, что программа должна работать на разных ЦПУ типы. В стандарте сказано, что GNU не поддерживает и не будет поддерживать 16-битные системы, но обработка всех различных 32- и 64-битных систем абсолютно необходима.
Критика
Стандарты кодирования GNU в основном используются проектами GNU, хотя их использование не ограничивается только проектами GNU.
В Ядро Linux категорически не одобряет этот стиль для кода ядра и уничижительно относится к нему: «Во-первых, я предлагаю распечатать копию стандартов кодирования GNU, а НЕ читать ее. Сжечь их, это отличный символический жест».[2]. Стив МакКоннелл, в его книге Код завершен, также не рекомендует использовать этот стиль; он отмечает образец кода, который использует его, значком «Coding Horror», символизирующим особо опасный код, и заявляет, что это препятствует читаемости.[3]
Смотрите также
Рекомендации
- ^ «Стандарты кодирования GNU». www.gnu.org. Получено 2020-11-29.
- ^ «Стиль кодирования ядра Linux - документация ядра Linux». www.kernel.org. Получено 2017-10-12.
- ^ МакКоннелл, Стив (2004). Code Complete: Практическое руководство по созданию программного обеспечения. Редмонд, Вашингтон: Microsoft Press. стр.746–747. ISBN 0-7356-1967-0.