如何将C语言代码风格为?
摘要:本文从工程实践角度系统梳理了 C 语言中常见的命名风格与复合语句对齐及缩进风格。在命名方面,本文指出 了C 语言并不存在绝对统一的命名法,snake_case、SCREAMING_SNAKE_CASE、camelCase、PascalCas
一、C语言命名风格
C语言的命名风格是可以随便发明的,因为每个人都可以按照自己的想法去命名,所以这里没法列出所有的命名风格。但是无论你使用的是何种风格,都需要明白命名的本质不是为了“好看”,而是“防错、易读、可维护”,C语言的命名规范本质上是约束人,而不是取悦人。所以当我们提及某些工程代码命名的糟糕时,需要知道真正糟糕的不是某种命名法,而是混乱和无纪律。
(一)snake_case(蛇形命名)
1、规则
蛇形命名是全小写,又名下划线命名,同时各个单词之间要用下划线“_”分隔开,不能使用大小写混合和连字符。
2、应用场景
蛇形命名风格常见于变量名、函数名和结构体成员中,但是在使用此命名风格时需要注意单词不要太多,因为名字太长会严重影响代码的阅读体验。试想一下,一个命名就直接占用30个字符的空间,是不是想着就感觉很夸张,看着就就像是看英文句子。下面针对常用的场景给出例子:
/* 变量命名 */
int buffer_len;
char user_name[32];
/* 函数命名 */
void usart_init(void);
int file_read(const char *file_path, char *buf);
/* 结构体成员命名 */
typedef struct
{
int id;
char display_name[32];
}usart_t;
从上面的代码示例我们可以看出,使用蛇形命名还是很直观的。
(二)SCREAMING_SNAKE_CASE(大写蛇形命名)
1、规则
SCREAMING_SNAKE_CASE通常用于预处理阶段可见的标识符,尤其是#define定义的宏,其命名规则与snake_case一致,但全部使用大写字母,如下所示:
#define MAX_BUFFER_SIZE 128
#define HTTP_ERR_TIMEOUT 123
2、应用场景
大写蛇形命名常用于宏常量、条件编译开关和宏函数中,在实际使用时需要注意,该风格用于定义宏并进入公共头文件后,可能对全局预处理环境产生影响,因此通常需要加模块前缀。,此风格的常用场景示例如下:
/* 宏常量 */
//未加模块前缀
#define MAX_BUFFER_SIZE 1024
#define TIMEOUT_MS 5000
/* 公共宏加模块前缀:需要注意加模块前缀最主要是为了区分宏的归属,做隔离,
因为宏有三个普通变量没有的危险属性:
(1)没有作用域;
(2)没有类型;
(3)无法通过语言层面的作用域机制进行隔离。
