Введение

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

Файлы

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

Переносимость

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

Критика

Стандарт кодирования GNU используется прежде всего в проектах GNU, хотя его применение не ограничивается только ими. Ядро Linux настоятельно не рекомендует этот стиль для кода ядра и пренебрежительно о нём отзывается: «Для начала, я бы посоветовал распечатать копию стандартов кодирования GNU и НЕ читать её. Сожгите их – это отличный символический жест». Стив Макконнелл в своей книге «Совершенный код» также предостерегает от использования этого стиля; он помечает пример кода, использующего его, значком «Coding Horror», символизирующим особо опасный код, и утверждает, что он затрудняет читаемость, требуя дополнительного уровня отступов для фигурных скобок.