AIGC标识 关于代码规范

嵌入式 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

  • 固定宽度类型、无魔法数、单一职责、统一缩进

posted @ 2026-09-15 23:08  youci  阅读(20)  评论(0)    收藏  举报