93 lines
3.0 KiB
Markdown
93 lines
3.0 KiB
Markdown
# 为 StellarX 做贡献
|
||
|
||
感谢您有兴趣为 StellarX 做出贡献!本文档提供了贡献的指南和步骤。
|
||
|
||
StellarX 是一个为 **Windows 平台**打造的 C++ GUI 框架,基于 EasyX 图形库。
|
||
|
||
## 开发环境设置
|
||
|
||
1. 安装 Visual Studio 2019 或更高版本
|
||
2. 安装对应版本的 EasyX 图形库
|
||
3. 安装 CMake 3.12 或更高版本
|
||
4. 克隆项目仓库
|
||
5. 使用 CMake 生成解决方案并编译
|
||
|
||
## 如何贡献
|
||
|
||
### 报告错误
|
||
1. 检查 [Issues](../../issues) 看看这个错误是否已经被报告过。
|
||
2. 如果没有,请创建一个新的 Issue。
|
||
3. 使用 "Bug 报告" 模板。
|
||
4. 提供**清晰的标题和描述**。
|
||
5. 包括相关的代码片段、截图或重现问题的步骤。
|
||
|
||
### 建议功能增强
|
||
1. 检查现有的 Issue 中是否有你的想法。
|
||
2. 使用 "功能请求" 模板创建一个新的 Issue。
|
||
3. 清晰地描述新功能,并解释它为何有用。
|
||
|
||
### 提交代码更改 (拉取请求 Pull Requests)
|
||
1. **Fork** GitHub 上的仓库。
|
||
2. **Clone** 你 fork 的仓库到本地机器。
|
||
3. 为你的功能或错误修复创建一个**新分支** (`git checkout -b my-feature-branch`)。
|
||
4. **进行你的更改**。确保你的代码遵循项目的风格(见下文)。
|
||
5. **提交你的更改**,并附上清晰描述性的提交信息。
|
||
6. **Push** 你的分支到你 fork 的 GitHub 仓库 (`git push origin my-feature-branch`)。
|
||
7. 针对原始 StellarX 仓库的 `main` 分支发起一个**拉取请求 (Pull Request)**。
|
||
|
||
## 代码风格指南
|
||
|
||
* 遵循项目中现有的代码格式和命名约定。
|
||
* 为变量、函数和类使用有意义的名称。
|
||
* 在必要时注释你的代码,特别是复杂的逻辑。
|
||
* 确保你的代码编译时没有警告。
|
||
* 彻底测试你的更改。
|
||
* 使用 **4个空格** 进行缩进(不要使用制表符)
|
||
- 类名使用 **PascalCase**(如 `ClassName`)
|
||
- 函数和变量使用 **camelCase**(如 `functionName`, `variableName`)
|
||
- 常量使用 **UPPER_CASE**(如 `CONSTANT_VALUE`)
|
||
- 成员变量以 **m_** 前缀(如 `m_memberVariable`)
|
||
- 控件属性使用有意义的名称,避免缩写
|
||
- 为所有公共接口添加详细的注释
|
||
- 遵循 RAII 原则管理资源
|
||
|
||
## 示例代码风格
|
||
|
||
```c++
|
||
|
||
// 好的示例
|
||
class MyControl : public Control {
|
||
public:
|
||
MyControl(int x, int y, int width, int height)
|
||
: Control(x, y, width, height), m_isActive(false) {}
|
||
|
||
void draw() override {
|
||
// 绘制逻辑
|
||
}
|
||
|
||
private:
|
||
bool m_isActive;
|
||
};
|
||
|
||
// 不好的示例
|
||
class my_control: public Control{
|
||
public:
|
||
my_control(int x,int y,int w,int h):Control(x,y,w,h),active(false){}
|
||
void Draw() override{
|
||
// 绘制逻辑
|
||
}
|
||
private:
|
||
bool active;
|
||
};
|
||
```
|
||
|
||
## 项目结构
|
||
|
||
请遵循项目的目录结构:
|
||
- 头文件放在 `include/StellarX/` 目录
|
||
- 实现文件放在 `src/` 目录
|
||
- 示例代码放在 `examples/` 目录
|
||
|
||
## 问题?
|
||
|
||
如果你有任何问题,可以随时开一个 Issue 或联系维护者。 |