The basic formatting rules are set in .clang-format. Use auto-formatting in your editor.
All code should target C++ language revision 20.
If you use CLion, please enable the setting called "Enable ClangFormat" under Settings > Editor > Code Style.
In projects that expose a C API with internal C++ code, the C naming conventions are used for language features that are shared.
Files are upper camel case.
- Files:
^[0-9a-zA-Z]+$ - Directories:
^[0-9a-zA-Z]+$
Example:
SomeFeature.cpp
SomeFeature.hPrivate/internal headers are placed in a Private/ directory.
Project folders include:
Sourcefor source files and public header filesPrivatefor private header filesIncludefor projects that require separate header files
Sources for a specific namespace must go into a folder with the lowercase name of that namespace. The only exception to this is the root namespace, as this doesn't require its own subfolder.
Names are lower camel case.
Example:
void getLimit() {
// ...
}Consts are lower camel case with capital letters.
Typedefs for structs, classes and datatype aliases are upper camel case.
Examples:
typedef uint32_t ThreadId;
const ThreadId id;
struct ThreadData {
// ...
};enum class or enum struct is preferred over plain enum because of scoping. It's styled like this:
enum class SomeType {
Ok,
NotSupported,
Error
};Don't ever throw them. Make a return type that wraps all the error and success scenarios that are relevant.