Практические занятия по курсу ОиМП/C++ check
Материал из Wiki - Факультет компьютерных наук
Версия от 13:45, 13 октября 2014; Mihaild (обсуждение | вклад)
Оформление
- Отступ - 4 пробела. Символы табуляции использовать для отступов запрещено.
- Отступами выделяются: тела функций, структур/классов, вложенных блоков.
- Бинарные операторы отбиваются пробелами с двух сторон, после унарных пробелы не ставятся: a += b + -c
- Пробелы после открывающей скобки и перед закрывающей скобкой не ставятся: f(1, (2 + 3)). Закрывающая скобка должна идти на той же строке, что и последнее выражение.
- Максимальная длина строки - 100 символов.
- Перед ; пробел не ставится. После ; в for ставится пробел.
- Пустые блоки записываются как {} (а не ;).
- Открывающая { пишется на той же строке, что и начало блока (if, while, for, объявление функции).
- else пишется на той же строке, что и закрывающая } от if: if (...) {...\n} else {
- Однострочные комментарии отделяются от кода двумя пробелами и начинаются с пробела.
- Пробелы в конце строки запрещены.
- Файл должен заканчиваться переводом строки.
- В range-base for двоеточие обрамляется пробелами.
- В начале/конце блока, после public/private/protected пустые строки не ставятся.
- Перед объявлением функции/структуры/класса - пустая строка обязательна.
Именование
Прочее
- Необходимо явно подключать заголовочные файлы, в которых объявляются используемые функции/классы/... Запрещено явно подключать один и тот же заголовочный файл дважды.
- В качестве логических операторов следует использовать &&, ||, ... Их аналоги and, or, ... запрещены.
- Запрещено использовать приведение типов в стиле C - следует использовать *_cast.
- Конструктор от одного аргумента должен быть объявлен explicit.
- Порядок аргументов функции: сначала входные параметры (по значению либо константой ссылке), затем выходные (по указателю).
- Неконстантные ссылки в качестве параметров запрещены.
- Конструкции вида *c++ запрещены (это инкремент указателя с последующим разыменованием - либо предполагался инкремент значения, либо * лишняя).
- При объявлении виртуальной функции следует использовать один и только один из спецификаторов virtual, final, override.
- При объявлении переменной спецификаторы static/extern/... идет перед именем типа.