[C.C++] C语言命名规范

285 0
Honkers 2025-6-3 17:07:55 | 显示全部楼层 |阅读模式

之前总是对自己的变量、函数等名称定义没有一个具体清晰的命名规范,现在具体整理一下,记录以及方便后续参考。

一、核心原则

  1. 可读性优先:名称需清晰表达用途,避免缩写(如 cnt → count)。
  2. 作用域标识:通过前缀/后缀区分全局变量、静态变量等。
  3. 模块化分层:使用前缀标识模块/组件(如 Timer_、Sensor_)。
  4. 风格一致性:同一项目中保持命名规则统一。

二、具体规则

1. 变量命名
类型规则示例
局部变量类型前缀 + 小驼峰 u8_currentCount, u8_sensorData
全局变量g_ + 类型前缀 + 小驼峰 g_u8_tickCount
静态变量s_  + 小驼峰s_buffer
指针变量p + 大驼峰(或明确类型描述)g_p_nextNode, p_uartHandle
常量全大写 + _ 分隔MAX_BUFFER_SIZE

2. 函数命名
类型规则示例关键说明
公有函数模块前缀 + 返回值前缀 + 大驼峰 + 动作描述Timer_xStart(), Sensor_uxGetCount()前缀顺序:返回值类型 → 模块 → 动作
静态/私有函数模块前缀 +  prv + 大驼峰Timer_prvInternalInit()私有函数无需返回值前缀
返回值前缀规则根据返回值类型选择前缀:
 - x: 返回 BaseType_t(FreeRTOS标准)
 - ux: 返回 UBaseType_t
 - v: 无返回值(void)
 - pv: 返回指针(如 void*)
 - e: 返回枚举类型
Queue_xSend(), Timer_eGetMode()强制要求:模块前缀必须存在,避免全局命名冲突

3. 类型与结构体
类型规则示例
结构体类型模块前缀 + _t 后缀Timer_Config_t, Sensor_Data_t
枚举类型模块前缀 + _e 后缀Timer_Mode_e, Sensor_Status_e
枚举值全大写 + 模块前缀 + _ 分隔TIMER_MODE_PERIODIC, SENSOR_STATUS_READY

4. 宏定义
类型规则示例
功能宏全大写 + 模块前缀 + _ 分隔TIMER_ENABLE(), SENSOR_DEBUG_ENABLED
配置宏模块前缀 + _CFG_ + 全大写TIMER_CFG_MAX_COUNT, SENSOR_CFG_SAMPLE_RATE

5. 文件与模块
类型规则示例
源文件模块名 + .ctimer.c, sensor_driver.c
头文件模块名 + .htimer.h, sensor_driver.h
模块内部函数头文件中用 static 限制作用域static void prvTimer_InternalDelay()

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Honkers

荣誉红客

关注
  • 4014
    主题
  • 36
    粉丝
  • 0
    关注
这家伙很懒,什么都没留下!

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行