关于代码规范
嵌入式 C 语言蛇形命名代码规范(个人通用版)
适用场景:STM32 / ESP32-S3 / FreeRTOS / ESP-IDF 所有个人项目、简历项目、实习开发。
核心原则:全程统一蛇形命名(snake_case),不混用驼峰;简洁、可读、可移植、符合行业通用规范。
1. 文件命名规范
-
全部小写、下划线分隔
-
禁止中文、空格、大写、特殊符号
-
一个模块一对 .h / .c,单一职责
示例:
-
bsp_led.c、sensor_mpu6050.c -
freertos_task.c、lvgl_ui_page.c
2. 头文件规范
所有 .h 文件必须加头文件保护
#ifndef __BSP_LED_H
#define __BSP_LED_H
// 声明、宏、结构体、枚举
#endif
规则:.h 只放声明,.c 放实现与静态变量。
3. 变量命名(核心蛇形规范)
全部小写 + 下划线,见名知意
前缀区分(非常重要,工程一眼整洁)
-
局部变量:无前缀 ——
led_state -
全局变量:g_ ——
g_system_status -
静态变量:s_ ——
s_uart_rx_cnt -
任务句柄:
led_task_handle
正确示例:
-
temp_value、humidity_data -
battery_voltage、screen_brightness
禁止:单字母、无意义缩写 a、b、t1、t2
4. 函数命名规范
格式:模块_动作_功能()
全部小写蛇形
示例:
-
led_state_set() -
mpu6050_data_read() -
uart_data_send() -
freertos_task_create_all()
RTOS 任务入口统一后缀:xxx_task_entry()
-
led_task_entry() -
sensor_task_entry()
5. 宏 / 常量规范
全部大写 + 下划线(全网统一标准,不允许蛇形小写、驼峰宏)
示例:
#define LED_PIN 48
#define TASK_STACK_SIZE 2048
#define BAUD_RATE 115200
宏表达式必须全包括号:
#define MAX_VALUE(a,b) ((a) > (b) ? (a) : (b))
6. 结构体 / 枚举规范
蛇形命名 + _t 后缀
typedef struct
{
uint8_t led_state;
uint16_t blink_interval;
} led_config_t;
typedef enum
{
SYS_IDLE,
SYS_WORKING,
SYS_ERROR
} sys_state_t;
7. 数据类型规范(嵌入式必守)
禁止使用 int / short / long,统一使用 stdint.h 固定宽度类型
-
uint8_t / int8_t -
uint16_t / int16_t -
uint32_t / int32_t
8. 代码风格通用规则
-
缩进:4 空格,不使用 Tab
-
禁止魔法数字,全部宏定义
-
函数行数尽量 ≤50 行,单一职责
-
所有指针使用前判空
-
入参全部做合法性校验
-
只读参数加 const
9. FreeRTOS 专属规范(你项目重点)
-
任务句柄:
led_task_handle -
队列句柄:
sensor_queue_handle -
任务函数死循环、禁止 return
-
多任务共享变量必须加锁/队列,禁止裸读裸写
-
中断内不延时、不打印、不动态内存
10. 统一风格总结(最简背诵版)
-
文件、变量、函数:全小写蛇形
-
宏、枚举值:全大写蛇形
-
结构体、枚举:蛇形 + _t
-
全局 g_、静态 s_、任务 xxx_task
-
固定宽度类型、无魔法数、单一职责、统一缩进
浙公网安备 33010602011771号