Документ описывает правила оформления кода для сохранения единого стиля и повышения его читаемости.
-
Вместо табуляции для отступов в коде используются 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;
}