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.
Files are upper camel case.
- Files:
^[0-9a-zA-Z]+$
- Directories:
^[0-9a-zA-Z]+$
Example:
SomeFeature.cpp
SomeFeature.h
Private/internal headers are postfixed with Private
before the file extension.
Like SomeFeaturePrivate.h
Project folders include:
Source
for source files and public header filesPrivate
for private header filesInclude
for 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() {
// ...
}
Preprocessor functions are written in snake-case and prefixed with tt_
, for example:
#define tt_assert(x) __tt_assert_internal(x)
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 {
Ok,
NotSupported,
Error
};
Don't ever throw them. Make a return type that wraps all the error and success scenarios that are relevant.