C语言笔记2之代码规范

1、命名

1、变量、函数等所有命名要用英文单词/单词缩写,采用驼峰结构或用下划线_隔开或者组合使用两者,如timeCnt、time_cnt、callbackEventFunc()、callbackEvent_Func()
2、尽量不要重名,C++重写除外

2、变量

2.1 常规变量

1、static变量要加s前缀,static sPoint = 0;

2、.c里定义的全局变量,要加g前缀,如int gTimeCnt = 0;

3、所有变量尽量要手动初始化,尽量不要使用编译器默认初始化,如int gTimeCnt = 0;

2.2 结构体类变量

2.2.1 自定义结构体类型名命名

尽量用大写字母开头,可加入 _st等样式标志;注意两种声明方式和定义方式

1、typedef 声明方式

2、typedef 定义和初始化,尽量手动初始化,使用列表项初始化方式

第0种,编译器默认初始化为0

第一种

第二种

第三种

第四种

3、struct 声明

声明的同时又定义,尽量不用这种方式吧,因为声明放在.h文件的,而定义是放在.c文件的

4、struct 定义和初始化

第0种,编译器默认初始化为0

第一种:

第二种

第三种:

第四种:

2.2.2 自定义枚举类型命名

尽量全部大写字母,可加入E开头样式;尽量加一个空枚举成员并赋值0(xxx_NULL = 0),枚举成员也要用全大写字母

1、typedef 声明

2、typedef 定义和初始化

默认初始化

手动初始化

3、enum 声明

声明的同时又定义,不常用

4、enum定义和初始化

默认初始化

手动初始化

2.2.3 自定义联合体命名

尽量用大写字母开头,可加入 U_等样式标志

1、typedef 声明

2、typedef 定义和初始化

默认初始化

第一种

第二种

第三种

3、union 声明

声明的同时又定义,不常用

4、union 定义和初始化

默认初始化

第一种

第二种

第三种

5、联合体的巧用

1、联合体 + 位域结构体

1.1、常用在bit标志位做事件标志

1.2 、 取不规则位数值

2、联合体 + 数组

2.1、取int型的每个字节的值

6、更正联合体的命名格式

联合体和结构体有异曲同工之处,所以推荐联合体的命名方式和结构体相似,使用 Xxx_un

3、指针

  • 1、指针尽量加p前缀,如int *pPoint = NULL; 也可以不加,如做函数参数时xxxx(char  *buff),看情况决定

2、指针尽量要手动初始化,例如int *pPoint = NULL;

3、当定义指针时,*紧靠指针名,如int  *p = NULL; 只有做函数返回值时,*才紧靠变量类型名,代表返回一个指向xxx类型的指针。例如

4、指针传参时,只要不改变区域内容,参数指针前一律加const

5、尽量不要使用*p++,指针的解引用(取值)*p,指针的偏移p++应该单独分开,应该写成如下:

6、当指针类型为void*,即指向任意数据类型,通常在不明确要返回什么数据类型、或不明确要指向什么数据类型时使用,使用原则:void* 类型指针实际上指向一块内存区,先强制类型转换成xxx数据类型,然后按xxx数据类型去取值

7、注意指针类型的使用,可通过强制类型转换让指针指向不同类型,不同类型指针访问同一块内存,得到不一样的值

4、作用域

1、在.c文件中,全局变量、函数等在写之前都应该用  static 限制它们只能在本.c文件内使用(加了 static 的全局变量或函数是不需要在.h里声明的);如果其他文件要调用的时候,再去掉 static 并在 .h 里进行声明

2、在.c文件中,全局变量、数组等只用作只读的话,也要主动加上 const

3、指针传参时,只要不改变区域内容,参数指针前一律加const

5、封装

1、不要滥用全局变量,尽量将一类全局变量用 typedef struct 去封装

2、常用面向对象的思维去开发,将事物抽象成一个类用 typedef struct 去封装

2.1  事物的属性方法,配合函数指针去封装

2.2  定义结构体变量

2.3 结构体初始化

3、数值封装,比如用来做判断的数值(1000)不要裸显数值(1000),应该要用宏定义 or 枚举去封装

1、当要限定值结果范围时用枚举封装,常用在switch语句、函数返回值结果类型等

在switch语句

做函数返回值时,限制函数返回结果范围

2、当不需要先去定义一个变量来限制范围时,用宏定义封装,仅做文本替换

常用在一些值的上下限判断时使用

4、代码正文里面,表达式尽量用宏定义封装,增加可读性

5、对于一类功能或一类实现的代码内容尽量写成函数;主代码中不要显示太过冗长的代码内容,应该写成函数一块一块的去调用的样式

例如,我们把整个代码逻辑内容写在一个函数里,代码过于冗长

修改后。。。

4、美观布局

代码排布,保证美观简洁

1、int a = b;   =号两边加空格

2、func(int a, int b);  ,后加空格

3、判断条件符号两边用空格隔开

     if(a == b || c == b) 

     if(a == b && c == b)

当条件区域不明确时,要主动加()

   if((a == b) || (c == b))

   if((a == b) && (c == b))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值