Документ описывает правила оформления кода для сохранения единого стиля и повышения его читаемости.
-
Вместо табуляции для отступов в коде используются 4 пробела.
-
Конец строки задаётся в unix формате (LF).
-
В случае, если файлы содержат определение классов, они именуются следующим образом:
%ClassName%.hpp
%ClassName%.cpp
. Иначе все буквы в имени файла должны быть строчными (маленькими):
SpeedTest.hpp SpeedTest.cpp version.hpp
- Все имена переменных начинаются со строчной буквы:
QString filePath;
- Все имена функций также начинаются со строчной буквы:
const QString & getFilePath();
- Глобальные переменные программы именуются с префиксом
g%varName%
:
int gDebugLevel;
- Переменные класса именуются с префиксом
_%varName%
:
uint8_t _buff;
- Классы именуются с прописной (заглавной) буквы:
class Man { public: Man(); private: int _height; int _age; }
- Пространства имен -- строчными символами:
namespace lightpack { }
- Константы именуются с прописной буквы с префиксом k:
const int kFirstLetterCapital;
- Не рекомендуется использовать #define в C++ коде. В случае острой необходимости в имени все символы должны быть прописными:
# define ALL_CAPITAL_LETTERS
- Пробелы после if, for, while, и других ключевых слов:
if (first == second) { for (int i = 0; i < N; i++) doSomething(); while (condition) doSomethingElse(); } else { findCallbackFunction(); }
- В случае единственного оператора во всех ветках скобки можно опустить:
if (first == third) start(); else stop();
- В заголовочных файлах для устранения коллизий используется директива контроля:
# pragma once
- Пространства имен записываются без отступов:
namespace lightpack { namespace speedtests { class AnotherMan { } } }
- При использовании в коде комментариев с пометкой TODO желательно точно описывать, что именно автор планировал сделать:
int getAvgColor() { // TODO: come up with a very fast algorithm for calculating the average color return -1; }