Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update c-guidelines.md #13

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 20 additions & 20 deletions c-guidelines.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
#C coding guidelines
# C coding guidelines

*NOTE: Этот документ нельзя использовать как гайдлайны по C++ или другим языкам*

#Code conventions
# Code conventions

##Скобки
## Скобки

Фигурные скобки ставятся на следующей строке и выравниваются по вертикали.
Блок внутри фигурных скобок отбивается единичным отступом.
Expand Down Expand Up @@ -54,7 +54,7 @@ for (var i=0; i<10; i++)
Тело `if`, `else`, `while`, `for` и `switch` обязательно обрамляется
фигурными скобками.

##Пробельные символы
## Пробельные символы

Максимальная длина строки — 80 символов.

Expand All @@ -81,13 +81,13 @@ if (condition)
}
```

##Line endings
## Line endings

В конце строки не должно быть пробельных символов.

Допустимы только unix line endings (\n).

##Именование переменных
## Именование переменных

Никакой "венгерской нотации". (Имеется в виду запрет на формальную Systems
Hungarian нотацию, в противовес содержательной Apps Hungarian.)
Expand All @@ -101,19 +101,19 @@ Hungarian нотацию, в противовес содержательной A
Имя переменной, содержащей объект должно содержать название этого объекта

Имя переменной (таблицы), содержащей в себе коллекцию объектов обычно содержит
существительное во множественном числе (foos — коллекция объектов foo).
существительное во множественном числе (`foos` — коллекция объектов `foo`).

Имя булевой переменной, обычно, `is_*` (`are_*`, `has_*` и проч. формы to be),
`have_*`, `need_*`, `should_*`, `must_*`, `in_*`, `not_*` и т.п.

Количество объектов: `num_*`.

##Именование функций
## Именование функций

Имя функции должно заключать в себе глагол либо заканчиваться на существительное
с окончанием -er.

##Указатели
## Указатели

Корректное написание:

Expand All @@ -123,7 +123,7 @@ val_ptr = *name
val_ptr->field
```

##Директивы препроцессора
## Директивы препроцессора

При оборачивании кода в директиву препроцессора отступ не добавляется:
```с
Expand All @@ -139,7 +139,7 @@ val_ptr->field
#endif /* HEADER_NAME_H_INCLUDED_ */
```

##Булевы операции
## Булевы операции

Следует ставить скобки вокруг булевых операций:

Expand All @@ -165,9 +165,9 @@ f(foo BOOLOP bar, baz)
(a && b || c) ? op1 : op2;
```

#Best practicies
# Best practicies

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

practices - убрать i


##Стандарты
## Стандарты
Допустимо использовать C89 или C99, но стандарт должен быть един по всему
коду проекта.

Expand All @@ -179,11 +179,11 @@ C89, C99, C++98.
Запрещена динамическая аллокация памяти не через луашный аллокатор, взятый
из стейта.

##Переменные
## Переменные

Необходимо инициализировать переменные при объявлении.

##Глобальные переменные
## Глобальные переменные

1) Глобальные переменные должны иметь префикс `g_`.

Expand All @@ -193,18 +193,18 @@ C89, C99, C++98.
Вместо глобальных переменных рекомендуется использовать структуру-состояние,
передавая указатель на неё первым аргументом функций.

##Публичные функции
## Публичные функции

Публичные функции библиотек должны предваряться префиксом библиотеки `prefix_`,
утверждаемым в каждом конкретном случае.

##Приватные функции
## Приватные функции

Приватные функции обязательно объявлять как static.
Приватные функции обязательно объявлять как `static`.

##Приватные макросы
## Приватные макросы

Приватные макросы обязательно удалять после использвоания с помощью директивы
Приватные макросы обязательно удалять после использования с помощью директивы
`#undef`.

```с
Expand Down