编码规范¶
Qwt 源码遵循以下格式化、C++ 版本兼容、命名和 Qt 使用规范。
主要规范要求¶
Qwt 源码使用 .clang-format 配置格式化,使用项目提供的 C++11 兼容宏,优先采用 override、nullptr、using 等现代语法,并遵循 Qt 开发规范。
代码格式化¶
项目使用 .clang-format 配置文件进行代码格式化。
提示 — 格式化建议
- 在提交代码前运行 clang-format 格式化
- IDE 可配置自动格式化(保存时触发)
- 保持与现有代码风格一致
C++11 兼容性宏¶
项目提供一组兼容性宏,确保代码在 C++11 和 C++17 环境下均可编译。
智能指针¶
使用 qwt_make_unique 以 C++11 兼容的方式创建 std::unique_ptr,示例如下:
1 2 | |
容器迭代¶
迭代 Qt 容器时用 qwt_as_const 包裹,避免隐式共享引发的深拷贝:
1 2 3 4 | |
编译期常量¶
编译期常量使用 constexpr 声明,示例如下:
1 2 | |
关键代码规范¶
1. 使用 override 和 final¶
使用标准 C++ 关键字代替旧宏:
1 2 3 4 5 | |
| 旧宏 | 新关键字 |
|---|---|
QWT_OVERRIDE |
override |
QWT_FINAL |
final |
2. 使用 nullptr 代替 NULL¶
空指针用 nullptr 声明,不用 NULL:
1 2 3 4 5 | |
3. 使用 static_cast 代替 C 风格强制转换¶
强制转换使用 static_cast<>:
1 2 3 4 5 | |
4. 使用 using 代替 typedef¶
用 using 别名代替 typedef:
1 2 3 4 5 | |
5. Qt 容器迭代规范¶
使用 qwt_as_const 防止 Qt 容器深拷贝:
1 2 3 4 5 | |
警告 — 重要
Qt 容器在迭代时可能发生隐式共享分离(深拷贝),使用
qwt_as_const可避免此问题。
Qt 开发最佳实践¶
信号槽语法¶
使用 Qt5+ 的信号槽语法:
1 2 3 4 5 | |
Q_PROPERTY 使用¶
正确使用 Q_PROPERTY 宏:
1 2 3 4 5 6 7 8 9 10 11 12 | |
关键字使用规范¶
使用 Qt 官方推荐的宏:
1 2 3 4 | |
警告 — 禁止
不要使用
slot、signal等小写命名的宏,它们在某些编译器下可能有问题。
命名规范¶
类名¶
- 使用驼峰命名法,首字母大写
- 以
Qwt开头:QwtPlotCurve
方法名¶
- 使用驼峰命名法,首字母小写
- getter 方法不加
get前缀:boundingRect() - setter 方法使用
set前缀:setSamples()
变量名¶
- 成员变量使用
m_前缀:m_data - 局部变量使用驼峰命名法:
sampleCount - 常量使用全大写:
MAX_WIDTH