5.9 KiB
5.9 KiB
命名规范指南
概述
本文件定义了系统中文件、文件夹和类的命名规范,以确保代码的一致性和可读性。
命名原则
1. 一致性原则
- 相同类型的组件使用相同的命名模式
- 保持命名风格在整个系统中一致
- 避免混合使用不同的命名约定
2. 描述性原则
- 名称应清晰描述其功能或用途
- 避免使用缩写,除非是广泛接受的
- 使用完整的单词以提高可读性
3. 简洁性原则
- 在保持描述性的前提下尽量简洁
- 避免过长的名称
- 删除不必要的单词
文件夹命名规范
目录结构
Sqbase/
├── core/ # 核心系统组件
├── data_processing/ # 数据处理组件(原 data/)
├── network_communication/ # 网络通信组件(原 network/)
├── configuration/ # 配置管理组件(原 config/)
├── utilities/ # 工具组件(原 utils/)
├── common_structures/ # 通用结构(原 common/)
├── interfaces/ # 接口定义
└── implementations/ # 实现文件
文件夹命名规则
- 使用小写字母
- 使用下划线分隔单词
- 名称应明确描述目录内容
- 避免使用缩写
文件命名规范
头文件 (.h)
- 使用 PascalCase(大驼峰命名法)
- 反映类名或主要功能
- 避免使用前缀,除非是框架要求
示例:
DataBuffer.h(原qdatabuffer.h)FaultToleranceManager.h(原qfaulttolerance.h)ConfigurationManager.h(原qconfigmanager.h)
实现文件 (.cpp)
- 与对应的头文件同名
- 使用相同的命名约定
示例:
DataBuffer.cppFaultToleranceManager.cppConfigurationManager.cpp
其他文件
- 文档文件:使用描述性名称和下划线分隔
- 配置文件:使用小写和下划线
- 资源文件:使用有意义的名称
类命名规范
类名
- 使用 PascalCase(大驼峰命名法)
- 使用名词或名词短语
- 反映类的职责和功能
- 避免使用前缀,除非是框架要求
示例:
DataBuffer(原QDataBuffer)FaultToleranceManager(原QFaultTolerance)ConfigurationManager(原QConfigManager)
接口类
- 使用描述性名称
- 可以以 "Interface" 或 "I" 开头(可选)
示例:
IDataProcessorNetworkInterface
抽象基类
- 可以以 "Base" 或 "Abstract" 开头
示例:
AbstractDataHandlerBaseConnection
方法命名规范
方法名
- 使用 camelCase(小驼峰命名法)
- 使用动词或动词短语
- 清晰描述方法的操作
示例:
initializeSystem()processOrderData()validateConfiguration()
访问器方法
- 获取方法:
getProperty()或直接property() - 设置方法:
setProperty(value) - 布尔方法:
isValid(),hasData(),canProcess()
变量命名规范
成员变量
- 使用 camelCase(小驼峰命名法)
- 可以添加
m_前缀以区分成员变量
示例:
m_bufferSizem_connectionStatem_dataProcessor
局部变量
- 使用 camelCase(小驼峰命名法)
- 描述变量的用途
示例:
currentPacketconnectionStatusprocessedData
常量
- 使用 UPPER_CASE(全大写)
- 使用下划线分隔单词
示例:
MAX_BUFFER_SIZEDEFAULT_TIMEOUT_MSSYSTEM_VERSION
枚举和结构体命名规范
枚举类型
- 使用 PascalCase(大驼峰命名法)
- 枚举值使用 PascalCase
示例:
enum class ConnectionState {
Disconnected,
Connecting,
Connected,
Degraded
};
结构体
- 使用 PascalCase(大驼峰命名法)
- 反映结构体的用途
示例:
struct ConnectionConfig {
std::string serverAddress;
int port;
int timeoutMs;
};
命名空间规范
命名空间
- 使用小写字母
- 反映模块或功能区域
示例:
trading_coredata_processingnetwork_communication
具体重命名方案
核心系统组件
QTradeCore→TradingCoreqtradecore.h→TradingCore.h
数据处理组件
QDataBuffer→DataBufferQDataQuality→DataQualityValidatorQOrderProcessor→OrderProcessorQBigOrderManager→BigOrderManager
网络通信组件
QFaultTolerance→FaultToleranceManagerQSubscriptionManager→SubscriptionManager
配置管理组件
QConfigManager→ConfigurationManagerQLogManager→LogManager
工具组件
QEventBus→EventBusObjectPool→ObjectPool(保持不变)ordertypedelegate.h→OrderTypeDelegate.h
迁移计划
第一阶段:创建新命名文件
- 使用新命名创建所有文件
- 保持旧文件暂时存在
- 更新包含关系
第二阶段:更新引用
- 更新所有包含新文件的代码
- 验证编译通过
第三阶段:清理旧文件
- 删除旧命名文件
- 更新构建配置
最佳实践
1. 可读性优先
- 选择最易理解的名称
- 避免技术术语,除非必要
- 考虑团队成员的背景
2. 保持一致性
- 在整个代码库中坚持相同的约定
- 定期进行代码审查以确保一致性
- 使用代码格式化工具
3. 文档化
- 为不明显的命名添加注释
- 维护命名约定文档
- 为新团队成员提供指导
4. 渐进式改进
- 不要一次性重命名所有内容
- 优先处理最常访问的组件
- 确保向后兼容性
工具支持
代码格式化
- 使用 clang-format 或类似工具
- 配置一致的格式化规则
- 在构建过程中自动格式化
静态分析
- 使用静态分析工具检查命名
- 设置命名约定检查规则
- 集成到 CI/CD 流程中
通过遵循这些命名规范,我们将创建一个更加一致、可读和可维护的代码库。