Overview
The most complete style guide to C++ is the source code itself. Any additions or modifications should be made to look as close as possible to the pre-existing code.
Naming
- With the exception of
main.cpp
, both h
and cpp
files are named with "upper camel case," i.e. first letter is capitalized as well. For example, PlayerProfile.cpp
and Game.h
are valid names.
- Classes are named with upper camel case as well, with a one-to-one naming between the class and the files that support it.
- All functions are named with "lower camel case," i.e. first letter is not capitalized. For example,
updatePlayerScore()
and init()
are valid names.
- All variables are named with lower camel case as well.
- Class member variables are prefixed with
m
, such as mDebugMetricsMonitor
.
- Static class member variables are prefixed with
s
, such as sInstance
.
- All constants are capitalized, whether defined as a macro or as a static variable.
Header File Structure
- Use a forward declarations instead of including headers whenever possible, as it potentially decreases build time.
- Document all public elements of a header using Doxygen.
- The access modifiers of a header should be ordered as follows:
Q_OBJECT
and Q_PROPERTY()
declarations before any access modifiers, when appropriate.
public
public slots
signals
protected
private slots
private
- The only code allowed in headers are simple getter functions and virtual destructors.
- In the
public
section, first declare getters/setters, then other behaviors.
Source File Structure
- Definitions shall be ordered as followed:
- Static variables
- Constructors/destructors
- Other definitions.
- Opening curly braces are always on the same line of the control statement it is scoping.
- A function's return value and function name are on the same line.
- A single line break is put between each function definition.
- Comments are always placed on the line above the statements it is documenting.
Miscelleneous Rules
#include
statements use <>
for system- and Qt-level includes, ""
for local includes.
#include
statements are then alphabetized.
- All real values should be explicitly stated as such with a decimal point.
- The
*
and &
modifier is joined to the type, not the variable. For example, do int* values;
instead of int *values;
.
- Lines should be no longer than 100 characters long with 4 character long indentations. If a line break is required, do so at the latest possible white space.
- Do not use tabs.
- Do not use
using namespace
anywhere.
- Maintain a "warnings are errors" policy regarding builds.
- VoltAir is C++11 compliant. It is within bounds to use any of its features.