标识符命名
标识符是变量、函数、类型的名字。起得好,代码像文章;起得差,三个月后自己都看不懂。
1. 概念:硬性规则
- 只能由字母、数字、下划线组成
- 不能以数字开头
- 区分大小写:Score 与 score 是两个名字
- 不能与关键字同名(if、int、for…)
2. 正确与错误例子
C
| 1 | /* 合法 */ |
| 2 | int count; |
| 3 | int _tmp; |
| 4 | int max_speed; |
| 5 | int Speed2; |
| 6 | |
| 7 | /* 非法 */ |
| 8 | int 2name; // 数字开头 |
| 9 | int my-name; // 连字符 |
| 10 | int my name; // 空格 |
| 11 | int float; // 关键字 |
3. 概念:好名字的标准
| 标准 | 差例子 | 好例子 | 说明 |
|---|
| 见名知意 | t | temperature_c | 能看出含义 |
| 类型/单位可提示 | v | voltage_mv | 单位写进名字 |
| 函数用动词 | get | read_adc_value | 表达动作 |
| 长度适中 | a1b2 | buf_len | 不要无意义乱码 |
4. 实际例子:嵌入式常见命名
C
| 1 | const uint16_t DEBOUNCE_MS = 20; |
| 2 | volatile uint32_t g uptime_ms; // 不推荐空格,示意:全局时间 |
| 3 | uint8_t led_state; |
| 4 | |
| 5 | void delay_ms(uint32_t ms); |
| 6 | int read_temperature(void); |
| 7 | void uart_send_str(const char *s); |
5. 风格约定(选一种并坚持)
- 变量/函数:snake_case(delay_ms)在 C 与嵌入式极常见
- 宏常量:全大写 + 下划线(MAX_LEN)
- 类型别名:常带 _t 后缀(Point_t)