Skip to content

Commit

Permalink
🖊️ Update docs
Browse files Browse the repository at this point in the history
  • Loading branch information
EveSunMaple committed Aug 29, 2024
1 parent 919e78f commit 79577ae
Show file tree
Hide file tree
Showing 2 changed files with 143 additions and 2 deletions.
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,16 @@

Astro 是一个极佳的前端框架,非常适合用来搭建漂亮而又拥有极致性能的个人博客。可惜它是一个前端框架而不是博客框架,这就导致 Astro 本身并没有类似的主题管理系统。换句话说,你的博客内容和主题是“嵌”在一起的。项目耦合度一高,当主题本身更新时,没有 Astro 项目开发经验的用户就很难更新他们自己的网站——因为他们可能不知道究竟应该修改哪里的代码。

所以,笔者希望通过这个小程序,在一定程度上解决此问题。有关此程序的实现逻辑等更多内容请见 [它是如何工作的?](docs\zh-CN\它是如何工作的.md)
所以,笔者希望通过这个小程序,在一定程度上解决此问题。有关此程序的实现逻辑等更多内容请见 [它是如何工作的?](docs/zh-CN/它是如何工作的.md)

## 这个项目需要什么帮助?

正如文档里面所说,此项目最重要的内容是核心实现代码 `analysis.cpp` 以及配置规则 `rule.json` 。其中配置规则 `rule.json` 需要大家的帮助!具体内容详见 [为更多主题提供支持](docs/zh-CN/为更多主题提供支持.md)

同时,本项目也将支持插件功能,在 `plugin.cpp` 中为某些特定主题的特定需要提供在 `analysis.h` 中没有提供的功能,转化成函数对象,解析 `rule.json` 调用。更多内容请见 [为我自己的主题编写插件](docs/zh-CN/为我自己的主题编写插件.md)

在编写代码前,请先阅读 [项目标准规范](docs/zh-CN/项目标准规范.md)

## 检查我的工作!

🛠️ 当前工作:重新整理代码结构以迎合文档所写
Expand Down
141 changes: 140 additions & 1 deletion docs/zh-CN/项目标准规范.md
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,保持主分支的稳定性。

0 comments on commit 79577ae

Please sign in to comment.