Jump to content

Стандарты кодирования GNU

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

Будучи тесно интегрированным с системой GNU, GNU Emacs обеспечивает автоматическое форматирование кода C в соответствии со стандартами кодирования GNU. [ 1 ] Вместо того, чтобы вручную изменять форматирование кода таким образом, чтобы это отклонялось от стандартов кодирования GNU, форматированный макет кода можно изменить, написав его в более дружественной к Emacs форме, например, вставив дополнительные круглые скобки.

Разделение длинных строк

[ редактировать ]

«Когда вы разбиваете выражение на несколько строк, разделяйте его перед оператором, а не после него». [ 2 ]

Например:

if (foo_this_is_long && bar > win (x, y, z)
    && remaining_condition)

Комментарии

[ редактировать ]

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

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

Комментарии должны состоять из полных предложений, написанных с заглавной буквы, за каждым из которых следует два пробела (чтобы Emacs мог определить, где заканчивается одно предложение и начинается следующее).

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

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

Портативность

[ редактировать ]

Стандарты кодирования GNU определяют проблему переносимости следующим образом: переносимость в мире Unix означает «между Unix-системами»; в программе GNU такая переносимость желательна, но не жизненно важна.

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

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

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

Ядро Linux категорически не рекомендует использовать этот стиль для кода ядра и относится к нему уничижительно: «Во-первых, я бы предложил распечатать копию стандартов кодирования GNU, а НЕ читать ее. Сжечь их, это отличный символический жест. ". [ 3 ] Стив МакКоннелл в своей книге Code Complete также не советует использовать этот стиль; он помечает пример кода, в котором он используется, значком «Ужас кодирования», символизирующим особенно опасный код, и заявляет, что он ухудшает читаемость, требуя дополнительного уровня отступов для фигурных скобок. [ 4 ]

См. также

[ редактировать ]
  1. ^ https://www.gnu.org/software/emacs/manual/html_mono/ccmode.html#index-GNU-style . {{cite web}}: Отсутствует или пусто |title= ( помощь )
  2. ^ «Стандарты кодирования GNU» . www.gnu.org . Проверено 29 ноября 2020 г.
  3. ^ «Стиль кодирования ядра Linux — Документация по ядру Linux» . www.kernel.org . Проверено 12 октября 2017 г.
  4. ^ МакКоннелл, Стив (2004). Code Complete: Практическое руководство по созданию программного обеспечения . Редмонд, Вашингтон: Microsoft Press. стр. 746–747 . ISBN  0-7356-1967-0 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 62d0994abb1fbe8036883d6c6cafae9f__1723119660
URL1:https://arc.ask3.ru/arc/aa/62/9f/62d0994abb1fbe8036883d6c6cafae9f.html
Заголовок, (Title) документа по адресу, URL1:
GNU coding standards - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)