summaryrefslogtreecommitdiff
path: root/doc/coding-convention.md
diff options
context:
space:
mode:
authorRiku Isokoski <riksu9000@gmail.com>2022-08-21 14:44:05 +0300
committerGitHub <noreply@github.com>2022-08-21 14:44:05 +0300
commitc495db8a71675fac3f48f8421b3035b318c3dd82 (patch)
tree186046d851e74f18bdc8ec8b7f2d6a0aa2b51eaa /doc/coding-convention.md
parent093a66c8f872fb50a521233f1475e2676a84eff0 (diff)
Simplify coding style (#1280)
Diffstat (limited to 'doc/coding-convention.md')
-rw-r--r--doc/coding-convention.md70
1 files changed, 29 insertions, 41 deletions
diff --git a/doc/coding-convention.md b/doc/coding-convention.md
index 7198fa4f..9d218ba2 100644
--- a/doc/coding-convention.md
+++ b/doc/coding-convention.md
@@ -1,41 +1,29 @@
-# Coding convention
-
-## Language
-
-The language of this project is **C++**, and all new code must be written in C++. (Modern) C++ provides a lot of useful tools and functionalities that are beneficial for embedded software development like `constexpr`, `template` and anything that provides zero-cost abstraction.
-
-C code is accepted if it comes from another library like FreeRTOS, NimBLE, LVGL or the NRF-SDK.
-
-## Coding style
-
-The most important rule to follow is to try to keep the code as easy to read and maintain as possible.
-
-Using an autoformatter is highly recommended, but make sure it's configured properly.
-
-There are preconfigured autoformatter rules for:
-
- * CLion (IntelliJ) in [.idea/codeStyles/Project.xml](/.idea/codeStyles/Project.xml)
- * `clang-format`
-
-Also use `clang-tidy` to check the code for other issues.
-
-If there are no preconfigured rules for your IDE, you can use one of the existing ones to configure your IDE.
-
- - **Indentation** : 2 spaces, no tabulation
- - **Opening brace** at the end of the line
- - **Naming** : Choose self-describing variable name
- - **class** : PascalCase
- - **namespace** : PascalCase
- - **variable** : camelCase, **no** prefix/suffix ('_', 'm_',...) for class members
- - **Include guard** : `#pragma once` (no `#ifdef __MODULE__ / #define __MODULE__ / #endif`)
- - **Includes** :
- - files from the project : `#include "relative/path/to/the/file.h"`
- - external files and std : `#include <file.h>`
- - use includes relative to included directories like `src`, not relative to the current file. Don't do: `#include "../file.h"`
- - Only use [primary spellings for operators and tokens](https://en.cppreference.com/w/cpp/language/operator_alternative)
- - Use auto sparingly. Don't use auto for [fundamental/built-in types](https://en.cppreference.com/w/cpp/language/types) and [fixed width integer types](https://en.cppreference.com/w/cpp/types/integer), except when initializing with a cast to avoid duplicating the type name.
- - Examples:
- - `auto* app = static_cast<DisplayApp*>(instance);`
- - `auto number = static_cast<uint8_t>(variable);`
- - `uint8_t returnValue = MyFunction();`
- - Use nullptr instead of NULL
+# Coding style
+
+## Use these tools to find and fix issues.
+
+- Use `clang-format` to format the code.
+- Use `clang-tidy` to check the code for other potential issues.
+
+## Follow these guidelines while writing code.
+
+- **Indentation** : 2 spaces, no tabulation
+- **Opening brace** at the end of the line
+- **Naming** : Choose self-describing variable name
+ - **class** : PascalCase
+ - **namespace** : PascalCase
+ - **variable** : camelCase, **no** prefix/suffix (`_`, `m_`,...) for class members
+- **Include guard** : `#pragma once` (no `#ifdef __MODULE__ / #define __MODULE__ / #endif`)
+- **Includes** :
+ - files from the project : `#include "relative/path/to/the/file.h"`
+ - external files and std : `#include <file.h>`
+ - use includes relative to included directories like `src`, not relative to the current file. Don't do: `#include "../file.h"`
+- Only use [primary spellings for operators and tokens](https://en.cppreference.com/w/cpp/language/operator_alternative)
+- Use `auto` sparingly. Don't use `auto` for [fundamental/built-in types](https://en.cppreference.com/w/cpp/language/types) and [fixed width integer types](https://en.cppreference.com/w/cpp/types/integer), except when initializing with a cast to avoid duplicating the type name.
+ ```c++
+ // Examples:
+ auto* app = static_cast<DisplayApp*>(instance);
+ auto number = static_cast<uint8_t>(variable);
+ uint8_t returnValue = MyFunction();
+ ```
+- Use `nullptr` instead of `NULL`