mirror of
https://github.com/ByteWelder/Tactility.git
synced 2026-02-18 10:53:17 +00:00
84 lines
1.5 KiB
Markdown
84 lines
1.5 KiB
Markdown
# C++ coding Style
|
|
|
|
The basic formatting rules are set in `.clang-format`. Use auto-formatting in your editor.
|
|
|
|
All code should target C++ language revision 17.
|
|
|
|
## Naming
|
|
|
|
### Files
|
|
|
|
Files are upper camel case.
|
|
|
|
- Files: `^[0-9a-zA-Z]+$`
|
|
- Directories: `^[0-9a-zA-Z]+$`
|
|
|
|
Example:
|
|
```c++
|
|
SomeFeature.cpp
|
|
SomeFeature.h
|
|
```
|
|
|
|
Private/internal headers are postfixed with `Private` before the file extension.
|
|
Like `SomeFeaturePrivate.h`
|
|
|
|
### Folders
|
|
|
|
Project folders include:
|
|
- `Source` for source files and public header files
|
|
- `Private` for private header files
|
|
- `Include` 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.
|
|
|
|
### Function names
|
|
|
|
Names are lower camel case.
|
|
|
|
Example:
|
|
|
|
```c++
|
|
void getLimit() {
|
|
// ...
|
|
}
|
|
```
|
|
|
|
### Preprocessor
|
|
|
|
Preprocessor functions are written in snake-case and prefixed with `tt_`, for example:
|
|
|
|
```c++
|
|
#define tt_assert(x) __tt_assert_internal(x)
|
|
```
|
|
|
|
### Type names
|
|
|
|
Consts are lower camel case with capital letters.
|
|
|
|
Typedefs for structs, classes and datatype aliases are upper camel case.
|
|
|
|
Examples:
|
|
|
|
```c++
|
|
typedef uint32_t ThreadId;
|
|
|
|
const ThreadId id;
|
|
|
|
struct ThreadData {
|
|
// ...
|
|
};
|
|
```
|
|
|
|
### Enumerations
|
|
|
|
`enum class` or `enum struct` is preferred over plain `enum` because of scoping. It's styled like this:
|
|
|
|
```c++
|
|
enum class {
|
|
Ok,
|
|
NotSupported,
|
|
Error
|
|
};
|
|
```
|