Create codingStyle.md
This commit is contained in:
parent
97e6592524
commit
8fe63cca53
|
@ -0,0 +1,111 @@
|
|||
# PhasicFlow Coding Style Guidelines
|
||||
This document outlines the coding style guidelines for the PhasicFlow codebase.
|
||||
Adhering to these guidelines ensures consistency, readability, and maintainability of the project.
|
||||
## 1. FormattingIndentation:
|
||||
* Use 4 spaces for every logical level and block.
|
||||
* Line Spacing: Leave two empty lines between sections (e.g., between functions in a .cpp file, between class members).
|
||||
|
||||
## 2. Naming ConventionsGeneral Naming:
|
||||
* All names should start with lowercase letters, except for special names (e.g., Ergun, Hertz).
|
||||
* Macro names start with Upper case or all the letters are in UPPER case.
|
||||
* Compound Names: For compound names, the first word starts with a lowercase letter, and subsequent words start with an uppercase letter (e.g., boundaryBase, motionModel).
|
||||
|
||||
## 3. File Structure
|
||||
* Header Files: Use the .hpp extension for header files.
|
||||
* Source Files: Use the .cpp extension for source files.
|
||||
* Header and Source File Headers: All header and source files must include a standardized header that describes the project's intention and licensing information.
|
||||
* File Naming: Header and source file names should correspond to the class they contain. Aim for one class per file.
|
||||
* Inline Functions: Place inline functions in a separate classNameI.hpp file to avoid cluttering the main header file.
|
||||
|
||||
## 4. Class DesignClass Member Order:
|
||||
* Private members and methods
|
||||
* Private static members and methods
|
||||
* Public methods
|
||||
* Public static methods
|
||||
* Enumerations and Nested Classes: Declare enumerations and nested classes before all class members and methods.
|
||||
* Special Functions: Each class must explicitly define all special functions:Constructor, Copy constructor and assignment operator, Move constructor and assignment operator
|
||||
* Destructor: Each class must have an explicit destructor declaration:`~className() = default`; or `~className();`
|
||||
* Interface classes or classes with virtual methods must have a virtual destructor.
|
||||
* Virtual Method Overrides: When implementing a `virtual` method from a base class in a derived class, use the `override` keyword. The same applies to derived class destructors.
|
||||
## 5. NamespacesOfficial Namespace:
|
||||
The official namespace for the codebase is pFlow. All entities should be defined within this namespace.
|
||||
|
||||
### Example File Structure
|
||||
```
|
||||
src/
|
||||
├── componentName1/
|
||||
│ ├── componentName1.hpp
|
||||
│ ├── componentName1.cpp
|
||||
│ ├── componentName1I.hpp
|
||||
│ └── ...
|
||||
└── componentName2/
|
||||
├── componentName2.hpp
|
||||
├── componentName2.cpp
|
||||
└── ...
|
||||
```
|
||||
### Example Class Structure
|
||||
```C++
|
||||
namespace pFlow
|
||||
{
|
||||
|
||||
class MyClass
|
||||
{
|
||||
public:
|
||||
enum class MyEnum
|
||||
{
|
||||
Value1,
|
||||
Value2
|
||||
};
|
||||
|
||||
class NestedClass
|
||||
{
|
||||
// ...
|
||||
};
|
||||
|
||||
private:
|
||||
int privateMember_;
|
||||
|
||||
void privateMethod();
|
||||
|
||||
|
||||
static int privateStaticMember_;
|
||||
|
||||
static void privateStaticMethod();
|
||||
|
||||
public:
|
||||
|
||||
MyClass();
|
||||
|
||||
MyClass(const MyClass& other);
|
||||
|
||||
MyClass(MyClass&& other);
|
||||
|
||||
MyClass& operator=(const MyClass& other);
|
||||
|
||||
MyClass& operator=(MyClass&& other);
|
||||
|
||||
~MyClass();
|
||||
|
||||
|
||||
void publicMethod();
|
||||
|
||||
static void publicStaticMethod();
|
||||
|
||||
};
|
||||
|
||||
// assuming base class has virtual methods
|
||||
class DerivedClass
|
||||
:
|
||||
public BaseClass
|
||||
{
|
||||
public:
|
||||
|
||||
...
|
||||
|
||||
~DerivedClass() override;
|
||||
|
||||
void virtualMethod() override;
|
||||
};
|
||||
|
||||
} // namespace pFlow
|
||||
```
|
Loading…
Reference in New Issue