-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
919e78f
commit 79577ae
Showing
2 changed files
with
143 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,142 @@ | ||
# 项目标准规范 | ||
|
||
🚧 此文档正在施工中 🚧 | ||
1. **命名约定** | ||
|
||
- **变量名**: | ||
- 采用 **`lowerCamelCase`** 格式。 | ||
- 使用简洁且具描述性的命名,避免单字母变量名(除非用于简单的局部循环变量)。 | ||
- 例子: `int itemCount;`、`std::string userName;`。 | ||
|
||
- **类名**: | ||
- 采用 **`UpperCamelCase`** 格式。 | ||
- 类名应尽量为名词或名词短语,具有描述性。 | ||
- 例子: `class DataProcessor;`、`class UserManager;`。 | ||
|
||
- **函数名**: | ||
- 采用 **`lowerCamelCase`** 格式。 | ||
- 函数名应为动词或动宾结构,清晰表达其功能。 | ||
- 例子: `void processData();`、`int calculateSum(int a, int b);`。 | ||
|
||
- **常量名**: | ||
- 采用 **`kUpperCamelCase`** 格式。 | ||
- 常量应清晰表达其含义,并且全局常量通常会加上`k`作为前缀。 | ||
- 例子: `const int kMaxUsers = 100;`、`const std::string kDefaultName = "Guest";`。 | ||
|
||
- **宏名**: | ||
- 采用 **`UPPER_SNAKE_CASE`** 格式。 | ||
- 避免使用宏定义常量,除非需要跨平台兼容或条件编译。 | ||
- 例子: `#define MAX_BUFFER_SIZE 1024`。 | ||
|
||
2. **文件命名** | ||
- 文件名应采用 **`lower_snake_case`** 格式。 | ||
- 文件名应尽量简洁且具描述性。 | ||
- 例子: `data_processor.h`、`user_manager.cpp`。 | ||
|
||
3. **头文件 (.h) 与实现文件 (.cpp)** | ||
- **头文件 (.h)**: | ||
- 头文件主要用于声明类、函数、常量、以及必要的宏。 | ||
- 头文件应包含 **include guards** 或 **`#pragma once`**,以防止重复包含。 | ||
- 类的声明应尽量简洁,包含必要的成员变量声明和函数原型。 | ||
- 避免在头文件中包含实现代码,尤其是循环依赖。 | ||
- 例子: | ||
```cpp | ||
#ifndef DATA_PROCESSOR_H | ||
#define DATA_PROCESSOR_H | ||
|
||
class DataProcessor { | ||
public: | ||
void processData(); | ||
private: | ||
int itemCount; | ||
}; | ||
|
||
#endif // DATA_PROCESSOR_H | ||
``` | ||
|
||
- **实现文件 (.cpp)**: | ||
- 实现文件包含函数的具体实现。 | ||
- 实现文件应首先包含对应的头文件,接着是标准库的头文件和其他需要的头文件。 | ||
- 实现文件应保持简洁,避免在一个文件中实现过多类或函数。 | ||
- 例子: | ||
```cpp | ||
#include "data_processor.h" | ||
#include <iostream> | ||
|
||
void DataProcessor::processData() { | ||
std::cout << "Processing data..." << std::endl; | ||
} | ||
``` | ||
|
||
4. **缩进与代码格式** | ||
- 统一使用 **4个空格** 进行缩进,不使用Tab。 | ||
- 每行代码不超过 **80个字符**,尽量避免超过120个字符。 | ||
- 在控制结构后使用 **大括号** `{}`,即使后面只有一行代码。 | ||
- 例子: | ||
```cpp | ||
if (condition) { | ||
doSomething(); | ||
} else { | ||
doSomethingElse(); | ||
} | ||
``` | ||
- **指针与引用**: | ||
- 在定义指针或引用时,`*` 与 `&` 紧跟类型后。 | ||
- 例子: `int* ptr;` 或 `std::string& ref;`。 | ||
|
||
5. **注释** | ||
- **行内注释**: | ||
- 采用 `//` 进行单行注释,简洁明了。 | ||
- 注释应紧随被注释代码,避免注释过多不必要的细节。 | ||
|
||
- **块注释**: | ||
- 采用 `/* ... */` 进行块注释,多用于函数的详细描述。 | ||
- 函数头部应包含简要的描述、参数说明以及返回值的描述。 | ||
- 例子: | ||
```cpp | ||
/* | ||
* Function: calculateSum | ||
* ---------------------------- | ||
* 计算两个整数的和。 | ||
* | ||
* a: 第一个整数 | ||
* b: 第二个整数 | ||
* | ||
* returns: 两个整数的和 | ||
*/ | ||
int calculateSum(int a, int b) { | ||
return a + b; | ||
} | ||
``` | ||
|
||
6. **代码组织与模块化** | ||
- **模块化设计**: | ||
- 将相关功能组织在同一模块内,模块内使用命名空间进行隔离。 | ||
- 每个模块应包含一个主要头文件,用于外部包含,其他辅助头文件应仅供模块内部使用。 | ||
- 例子: | ||
```cpp | ||
namespace data_processing { | ||
void processData(); | ||
} | ||
``` | ||
|
||
- **目录结构**: | ||
- 按功能模块划分目录,每个模块包含 `include` 与 `src` 两个子目录,分别存放头文件和实现文件。 | ||
- 例子: | ||
``` | ||
/project_root | ||
├── /include | ||
│ ├── data_processor.h | ||
│ └── user_manager.h | ||
└── /src | ||
├── data_processor.cpp | ||
└── user_manager.cpp | ||
``` | ||
7. **代码审查与测试** | ||
- 所有提交的代码应经过 **代码审查**,确保代码质量与一致性。 | ||
- 编写单元测试,覆盖核心功能与重要模块,确保代码的稳定性和正确性。 | ||
8. **版本控制** | ||
- 使用 **Git** 进行版本控制。 | ||
- 每次提交信息应简明扼要,描述所做的更改。 | ||
- 遵循 **分支模型**,例如 Git Flow,保持主分支的稳定性。 |