diff --git a/c-guidelines.md b/c-guidelines.md index fd6eb62..897e2b7 100644 --- a/c-guidelines.md +++ b/c-guidelines.md @@ -1,10 +1,10 @@ -#C coding guidelines +# C coding guidelines *NOTE: Этот документ нельзя использовать как гайдлайны по C++ или другим языкам* -#Code conventions +# Code conventions -##Скобки +## Скобки Фигурные скобки ставятся на следующей строке и выравниваются по вертикали. Блок внутри фигурных скобок отбивается единичным отступом. @@ -54,7 +54,7 @@ for (var i=0; i<10; i++) Тело `if`, `else`, `while`, `for` и `switch` обязательно обрамляется фигурными скобками. -##Пробельные символы +## Пробельные символы Максимальная длина строки — 80 символов. @@ -81,13 +81,13 @@ if (condition) } ``` -##Line endings +## Line endings В конце строки не должно быть пробельных символов. Допустимы только unix line endings (\n). -##Именование переменных +## Именование переменных Никакой "венгерской нотации". (Имеется в виду запрет на формальную Systems Hungarian нотацию, в противовес содержательной Apps Hungarian.) @@ -101,19 +101,19 @@ Hungarian нотацию, в противовес содержательной A Имя переменной, содержащей объект должно содержать название этого объекта Имя переменной (таблицы), содержащей в себе коллекцию объектов обычно содержит -существительное во множественном числе (foos — коллекция объектов foo). +существительное во множественном числе (`foos` — коллекция объектов `foo`). Имя булевой переменной, обычно, `is_*` (`are_*`, `has_*` и проч. формы to be), `have_*`, `need_*`, `should_*`, `must_*`, `in_*`, `not_*` и т.п. Количество объектов: `num_*`. -##Именование функций +## Именование функций Имя функции должно заключать в себе глагол либо заканчиваться на существительное с окончанием -er. -##Указатели +## Указатели Корректное написание: @@ -123,7 +123,7 @@ val_ptr = *name val_ptr->field ``` -##Директивы препроцессора +## Директивы препроцессора При оборачивании кода в директиву препроцессора отступ не добавляется: ```с @@ -139,7 +139,7 @@ val_ptr->field #endif /* HEADER_NAME_H_INCLUDED_ */ ``` -##Булевы операции +## Булевы операции Следует ставить скобки вокруг булевых операций: @@ -165,9 +165,9 @@ f(foo BOOLOP bar, baz) (a && b || c) ? op1 : op2; ``` -#Best practicies +# Best practicies -##Стандарты +## Стандарты Допустимо использовать C89 или C99, но стандарт должен быть един по всему коду проекта. @@ -179,11 +179,11 @@ C89, C99, C++98. Запрещена динамическая аллокация памяти не через луашный аллокатор, взятый из стейта. -##Переменные +## Переменные Необходимо инициализировать переменные при объявлении. -##Глобальные переменные +## Глобальные переменные 1) Глобальные переменные должны иметь префикс `g_`. @@ -193,18 +193,18 @@ C89, C99, C++98. Вместо глобальных переменных рекомендуется использовать структуру-состояние, передавая указатель на неё первым аргументом функций. -##Публичные функции +## Публичные функции Публичные функции библиотек должны предваряться префиксом библиотеки `prefix_`, утверждаемым в каждом конкретном случае. -##Приватные функции +## Приватные функции -Приватные функции обязательно объявлять как static. +Приватные функции обязательно объявлять как `static`. -##Приватные макросы +## Приватные макросы -Приватные макросы обязательно удалять после использвоания с помощью директивы +Приватные макросы обязательно удалять после использования с помощью директивы `#undef`. ```с