Skip to content

Commit b730fdd

Browse files
committed
add specifier style
Signed-off-by: sunrisepeak <speakshen@163.com>
1 parent fa7afe4 commit b730fdd

File tree

1 file changed

+117
-13
lines changed

1 file changed

+117
-13
lines changed

README.md

Lines changed: 117 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,19 +22,123 @@ int main() {
2222
2323
## 目录
2424

25-
- 0.[使用`import xxx`替代`#include <xxx>`](./README.md#0使用import-xxx替代include-xxx)
26-
- 1.[模块文件结构](./README.md#1模块文件结构)
27-
- 2.[使用模块`.cppm`替代头文件`.h``.hpp`](./README.md#2使用模块cppm替代头文件hhpp)
28-
- 3.[模块实现与接口导出分离](./README.md#3模块实现与接口导出分离)
29-
- 4.[模块及模块分区命名规范](./README.md#4模块及模块分区命名规范)
30-
- 5.[多文件模块和目录](./README.md#5多文件模块和目录)
31-
- 6.[可导出模块分区和内部模块分区](./README.md#6可导出模块分区和内部模块分区)
32-
- 7.[模块化与向前兼容](./README.md#7模块化与向前兼容)
33-
- 8.[其他](./README.md#8其他)
34-
- 8.1 尽可能的少使用宏
35-
- 8.2 导出模板接口时注意全局静态成员
36-
37-
## 正文
25+
- 一、`标识符`命名风格
26+
- 1.0 [类型名 - 大驼峰]()
27+
- 1.1 [对象/数据成员 - 小驼峰]()
28+
- 1.2 [函数 - 下划线(snake_case)]()
29+
- 1.3 [私有表示 - `_`后缀]()
30+
- 二、模块化
31+
- 2.0 [使用`import xxx`替代`#include <xxx>`](./README.md#0使用import-xxx替代include-xxx)
32+
- 2.1 [模块文件结构](./README.md#1模块文件结构)
33+
- 2.2 [使用模块`.cppm`替代头文件`.h``.hpp`](./README.md#2使用模块cppm替代头文件hhpp)
34+
- 2.3 [模块实现与接口导出分离](./README.md#3模块实现与接口导出分离)
35+
- 2.4 [模块及模块分区命名规范](./README.md#4模块及模块分区命名规范)
36+
- 2.5 [多文件模块和目录](./README.md#5多文件模块和目录)
37+
- 2.6 [可导出模块分区和内部模块分区](./README.md#6可导出模块分区和内部模块分区)
38+
- 2.7 [模块化与向前兼容](./README.md#7模块化与向前兼容)
39+
- 2.8 [其他](./README.md#8其他)
40+
- 2.8.1 尽可能的少使用宏
41+
- 2.8.2 导出模板接口时注意全局静态成员
42+
43+
## 一、`标识符`命名风格
44+
45+
> 核心思想通过`标识符`风格设计, 能快速识别 - 类型、函数、数据以及封装性
46+
47+
```cpp
48+
namespace mcpplibs { // 1.命名空间全小写
49+
50+
class StyleRef { // 2.类型名大驼峰
51+
52+
private:
53+
int data_; // 3.私有数据成员 xxx_
54+
std::string fileName_; // std::
55+
56+
public: // 4. 构造函数 / bigfive 单独放一个public区域
57+
58+
StyleRef() { }
59+
StyleRef(const StyleRef &obj) { /* ... */ }
60+
StyleRef(StyleRef &&) { /* ... */ }
61+
StyleRef & operator=(const StyleRef &) { /* ... */ }
62+
StyleRef & operator=(StyleRef &&) { /* ... */ }
63+
~StyleRef() { /* ... */ }
64+
65+
public: // 5.公有函数区域
66+
67+
// 函数名 下划线分割 / snake_style
68+
void load_config_file(std::string fileName /* 7.小驼峰 */) {
69+
// 成员函数如无特殊要求接口和实现不分离
70+
parse_(config);
71+
}
72+
73+
private:
74+
75+
// 6.公有函数区域, 被私有成员函数以 `_` 结尾
76+
void parse_(std::string config) {
77+
78+
}
79+
80+
};
81+
82+
}
83+
```
84+
85+
### 1.0 类型名 - 大驼峰
86+
87+
> 单词首字母都大写, 单词之间不加下划线.
88+
89+
- 例: `StyleRef, HttpServer, JsonParser`
90+
91+
```cpp
92+
struct StyleRef {
93+
using FileNameType = std::string;
94+
};
95+
```
96+
97+
### 1.1 对象/数据成员 - 小驼峰
98+
99+
> 一个单词首字母小写, 后续单词首字母大写, 不加下划线
100+
101+
- 例: `fileName, maxRetryCount, configText`
102+
103+
```cpp
104+
struct StyleRef {
105+
std::string fileName;
106+
};
107+
```
108+
109+
### 1.2 函数 - 下划线(snake_case)
110+
111+
> 全小写(通常), 单词用下划线连接
112+
113+
- 例: `load_config_file, parse_, max_retry_count`
114+
115+
```cpp
116+
class StyleRef {
117+
public:
118+
void load_config_file(std::string fileName) {
119+
120+
}
121+
};
122+
```
123+
124+
### 1.3 私有表示 - `_`后缀
125+
126+
> 在标识符后加上`_`表示是对外部不可访问/私有的数据, 即可以是数据成员也可以是函数
127+
128+
- 例: `fileName_, load_config_file_`
129+
130+
```cpp
131+
class StyleRef {
132+
private:
133+
std::string fileName_;
134+
135+
void parse_(std::string config) {
136+
137+
}
138+
};
139+
```
140+
141+
## 二、模块化
38142

39143
### 0.使用`import xxx`替代`#include <xxx>`
40144

0 commit comments

Comments
 (0)