forked from pEp.foundation/CXX-project-template

commit
7aa9e04242
1 changed files with 56 additions and 0 deletions
@ -0,0 +1,56 @@ |
|||||
|
# <PROJECT_NAME> |
||||
|
|
||||
|
## Resources |
||||
|
|
||||
|
* Repository: <REPO url here> |
||||
|
* Change management: <JIRA url here> |
||||
|
* Doc: <Wiki link here> |
||||
|
|
||||
|
* Maintainer: <e-mail here> |
||||
|
* Build-maintainers: |
||||
|
* Build windows: <e-mail here> |
||||
|
* Build android: <e-mail here> |
||||
|
* ... |
||||
|
|
||||
|
## Requirements & Platforms |
||||
|
|
||||
|
<Please add here the technical requirements of the project> |
||||
|
* License: GPL3 |
||||
|
* C++ standard: C++11 (or newer, but consider portability) |
||||
|
* supported compilers: gcc/clang (must be supported at least) |
||||
|
* Build sytem: GNU Make (Linux, macOS) |
||||
|
|
||||
|
## Coding conventions |
||||
|
|
||||
|
* Code-formatting: use clang-format |
||||
|
* Please try to use the .clang-format with the least necessary changes (maintainability and consistency within pEp) |
||||
|
* static-analysis: use clang-tidy |
||||
|
* Please try to use the .clang-tidy with the least necessary changes (maintainability and consistency within pEp) |
||||
|
|
||||
|
### Filenames |
||||
|
|
||||
|
implementation: .cc |
||||
|
header: .hh |
||||
|
template-implementation: .hxx |
||||
|
|
||||
|
### Namespaces |
||||
|
|
||||
|
all pEp source code must be in a top level namespace 'pEp'. |
||||
|
With this exception all other nested namespaces must be in 'CamelCase' |
||||
|
|
||||
|
#### using namespace |
||||
|
it is never encouraged to do 'use namespace std;'. In header files it is actually forbidden, and in implementation files it is |
||||
|
stronly discouraged, because as soon as you want to templatize, the 'using namespace' directive has to be replaced with explicit 'std::' prefixes, |
||||
|
because the templateized implementation will have to be in a header file extension (.hxx) |
||||
|
This applies strongly for the namespace 'std' and needs to be carefully considered for all other namespaces. |
||||
|
|
||||
|
### Include guards |
||||
|
|
||||
|
Do not use #pragma once , use #ifdef/#define style (portability reasons) |
||||
|
naming key: <PROJECTNAME>_<FILENAME> (e.g. `LIBPEPDATATYPES_FILENAME_HH`) |
||||
|
|
||||
|
### Identifiers |
||||
|
|
||||
|
* types: all types must start with an uppercase letter, CamelCase is recommended. |
||||
|
* variables: snake_case is recommended |
||||
|
* functions: snake_case is recommended |
Loading…
Reference in new issue