Практические занятия по курсу ОиМП/C++ check

Материал из Wiki - Факультет компьютерных наук
Версия от 13:39, 13 октября 2014; Mihaild (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Оформление

  1. Отступ - 4 пробела. Символы табуляции использовать для отступов запрещено.
  2. Отступами выделяются: тела функций, пространств имен, структур/классов, вложенных блоков.
  3. Бинарные операторы отбиваются пробелами с двух сторон, после унарных пробелы не ставятся: a += b + -c
  4. Пробелы после открывающей скобки и перед закрывающей скобкой не ставятся: f(1, (2 + 3)). Закрывающая скобка должна идти на той же строке, что и последнее выражение.
  5. Максимальная длина строки - 100 символов.
  6. Перед ; пробел не ставится. После ; в for ставится пробел.
  7. Пустые блоки записываются как {} (а не ;).
  8. Открывающая { пишется на той же строке, что и начало блока (if, while, for, объявление функции).
  9. else пишется на той же строке, что и закрывающая } от if: if (...) {...\n} else {
  10. Однострочные комментарии отделяются от кода двумя пробелами и начинаются с пробела.
  11. Пробелы в конце строки запрещены.
  12. Файл должен заканчиваться переводом строки.
  13. В range-base for двоеточие обрамляется пробелами.
  14. В начале/конце блока, после public/private/protected пустые строки не ставятся.
  15. Перед объявлением функции/структуры/класса - пустая строка обязательна.

Именование

Прочее

  1. Необходимо явно подключать заголовочные файлы, в которых объявляются используемые функции/классы/... Запрещено явно подключать один и тот же заголовочный файл дважды.
  2. В качестве логических операторов следует использовать &&, ||, ... Их аналоги and, or, ... запрещены.
  3. Запрещено использовать приведение типов в стиле C - следует использовать *_cast.
  4. Конструктор от одного аргумента должен быть объявлен explicit.
  5. Порядок аргументов функции: сначала входные параметры (по значению либо константой ссылке), затем выходные (по указателю).
  6. Неконстантные ссылки в качестве параметров запрещены.
  7. Конструкции вида *c++ запрещены (это инкремент указателя с последующим разыменованием - либо предполагался инкремент значения, либо * лишняя).
  8. При объявлении виртуальной функции следует использовать один и только один из спецификаторов virtual, final, override.
  9. При объявлении переменной спецификаторы static/extern/... идет перед именем типа.