如何将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)无法通过语言层面的作用域机制进行隔离。
阅读全文