C语言编码规范——着重注意点整理

本文详细介绍了C语言的编码规范,包括变量命名、宏定义、类型后缀、函数设计、文件命名、代码格式、注释、日志打印以及编码安全和效率的注意事项。强调了命名的重要性,提出了函数设计应考虑高扇入、低扇出的原则,并对日志级别进行了定义。同时,提出了避免使用goto、控制if else嵌套层数、检查入参和内存释放、减少隐式类型转换等提高代码质量的建议。

C语言编码规范——着重注意点整理

编码规范的目的:

保证不同背景和经历的开发同学可以良好的协同开发

保证组织级的开发技能和经验得以共享和传承


编程最难的是命名!因为其他的算法、数据结构都有据可循。

命名完全体现了程序的可阅读性和可理解性。

1、 变量命名规范

(1)   变量命名

以字母或下划线开头,大小写字母和下划线交错命名。

(2)   前缀

静态变量 s_
全局变量 g_
指针变量 p_
无符号   u_
数组     a_
函数指针 pf_
枚举变量 en_
结构体   st_
VOID     v_
32位系统下:
  signed int缩写为INT或者INT32

unsigned int缩写为UINT或者UINT32。

BOOL b_XXX;

CHAR c_XXX;
UCHAR uc_XXX;

SHORT  s_XXX;
USHORT us_XXX;

INT i_XXX;
UINT ui_XXX;

LONG l_XXX;
ULONG ul_XXX;

2、 宏定义

宏定义的命名:字母全部大写并以下划线进行分割。

宏定义是预处理时进行简单的字符替换。

宏定义没有类型,而且宏定义不分配内存

3、 类型后缀

结构体以_S结尾:

typedef struct XXX
{
    ....
}XXX_S;

附:结构的封装一定要合理,好好利用字节对齐问题,减少空间的浪费。

枚举以_E结尾:

typedef enum XXX
{
    ....
}XXX_E;

联合体以_U结尾:

typedef union XXX
{
    ....
}XXX_U;

函数指针以_PF结尾。

4、 函数

命名规范:模块名_功能(模块字母大写,功能字母大小写交错)

函数入参可以加上IN/OUT/INOUT。

注意:

函数务必检查入参的合法性

尽量设计高扇入、合理扇出(<7)的函数。

(扇出即是调用其他函数的个数,扇入即被调用次数)

5、 文件名

文件名全小写,命名规范“模块名_功能名.文件后缀”

6、 换行/命名的缩写/代码对齐/字符间空白

7、 注释

只能使用/* */。

8、 日志打印

(1)   打印什么?

基本包括文件名、函数名、行号、错误原因、变量值等。

(2)   日志分级

DEBUG/TRACE——精确记录一些用于调试的log。

INFO——一般记录正常运行流程和状态记录。

WARN——警告,可能会出现问题的地方。

ERROR/FATAL——重点记录的错误,详细记录失败的场景、失败原因、一些关键变量值等。

9、 其他——编码安全注意点及编码效率

(1)   编码效率:全局效率、局部效率、时间效率、空间效率

注意编程中的时间和空间转换的问题,以此提高效率。

(2)   禁止使用goto语句。

(3)   If else语句的嵌套尽量不超过三层。

(4)   尽量避免循环中continue、break的一起使用问题。

(5)   务必进行入参检查和申请内存的变量的释放问题。

指针的操作:

#使用前,进行合法性检查
ptr = malloc(size);
if(NULL == ptr)
{
    //处理语句;
}
else
{   
    //处理语句;
}
#使用完指针ptr,进行释放和指针置空
free(ptr);
ptr = NULL;
指针使用前,进行合法性检查(判空处理),指针使用后,释放申请的空间且指针置空。

(6)   代码复杂度的度量和控制,提高软件的可维护性。

(7)    减少CPU的切换次数,将最忙的循环放在内层。

(8)    循环中,合理放置判断语句,减少判断次数。

(9)    判断风格,if(value == variable),if(NULL == ptr)

务必注意:判断是否可能恒为真、恒为假的问题!!!

(10)避免类型的隐式转换,全部进行显示类型转换。

(11)圈复杂度一般控制在<10,必须<15。


评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值