Simplify coding style (#1280)

This commit is contained in:
Riku Isokoski 2022-08-21 14:44:05 +03:00 committed by GitHub
parent 093a66c8f8
commit c495db8a71
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,41 +1,29 @@
# Coding convention # Coding style
## Language ## Use these tools to find and fix issues.
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. - Use `clang-format` to format the code.
- Use `clang-tidy` to check the code for other potential issues.
C code is accepted if it comes from another library like FreeRTOS, NimBLE, LVGL or the NRF-SDK. ## Follow these guidelines while writing code.
## Coding style - **Indentation** : 2 spaces, no tabulation
- **Opening brace** at the end of the line
The most important rule to follow is to try to keep the code as easy to read and maintain as possible. - **Naming** : Choose self-describing variable name
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 - **class** : PascalCase
- **namespace** : PascalCase - **namespace** : PascalCase
- **variable** : camelCase, **no** prefix/suffix ('_', 'm_',...) for class members - **variable** : camelCase, **no** prefix/suffix (`_`, `m_`,...) for class members
- **Include guard** : `#pragma once` (no `#ifdef __MODULE__ / #define __MODULE__ / #endif`) - **Include guard** : `#pragma once` (no `#ifdef __MODULE__ / #define __MODULE__ / #endif`)
- **Includes** : - **Includes** :
- files from the project : `#include "relative/path/to/the/file.h"` - files from the project : `#include "relative/path/to/the/file.h"`
- external files and std : `#include <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"` - 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) - 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. - 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: ```c++
- `auto* app = static_cast<DisplayApp*>(instance);` // Examples:
- `auto number = static_cast<uint8_t>(variable);` auto* app = static_cast<DisplayApp*>(instance);
- `uint8_t returnValue = MyFunction();` auto number = static_cast<uint8_t>(variable);
- Use nullptr instead of NULL uint8_t returnValue = MyFunction();
```
- Use `nullptr` instead of `NULL`