C 编程规范(变量,结构体,typedef,函数,枚举,宏的命名)



1、命名约定
1.1 通用 命名规则

函数命名变量命名文件命名要有描述性,少用缩写。
注意,一些特定广为人知缩写是允许的,例如用i表示迭代变量(iteration)和用T表示模板参数(template)。

目前主要有 4种命名风格:

序号类型描述
1驼峰 命名法首字母小写,每个逻辑断点都用大写字母来标记
一般用于全局变量函数结构体变量对象名
示例:myData
2帕斯卡(Pascal)命名法与驼峰命名法类似,只是 首字母大写
一般用于结构名类名
示例:MyData
3下划线 命名法函数名中的每个逻辑断点都用下划线 _分割
C程序UNIX这样的环境中,它的使用非常普遍
一般用于函数变量
示例:my_data
4匈牙利 命名法变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域、类型等
示例:i_MyData

1.2 文件名 命名规则

文件名全部小写,可以包含下划线 _连字符 -,,依照项目的约定。如果没有约定。那么下划线 _更好。
例如:my_useful_class.c

1.3 变量 命名规则

变量(包括函数参数) 和数据成员名一律小写,单词之间用下划线 _连接。
成员变量以下划线结尾,但结构体的就不用。

序号类别举例
1局部变量,函数参数local_variable
2结构体内的变量struct_data_member
3成员变量class_data_member_

1.4 类型 命名规则

所有类型命名:结构体类型定义typedef),枚举类型模板参数,均使用相同约定,即以大写字母开始,每个单词首字母均大写,不包含下划线(帕斯卡命名法)。例如:

class BookCartoon {
	string 	title_;		
	string 	author_;		
};

struct BookCartoon {
	char 	title[40];		
	char 	author[40];		
};

typedef struct {
	char 	title[40];		
	char 	author[40];				
} BookCartoon;

enum ButtonState {
	SHORT_PRESS,	/* 短按 */
	LONG_PRESS,		/* 长按 */
};

typedef enum  {
	SHORT_PRESS,	/* 短按 */
	LONG_PRESS,		/* 长按 */
} ButtonState;

类型 变量 采用驼峰命名:

序号类别举例
1结构体变量bookCartoon
2对象名bookCartoon
3枚举变量buttonState

1.5 函数 命名规则

一般来说,函数名的每个单词首字母大写,没有下划线。
对于首字母缩写的单词,更倾向于将它们视作一个单词进行首字母大写。

序号方式描述
1驼峰 命名法myFunctio()deleteUrl()
2下划线 命名法my_function()
3帕斯卡(Pascal)命名法MyFunction()DeleteUrl()

1.6 枚举 命名规则

枚举的命名应当和常量一致:kEnumName或是ENUM_NAME

typedef enum  {
	BS_SHORT_PRESS,	/* 短按 */
	BS_LONG_PRESS,	/* 长按 */
} ButtonState;

1.7 宏 的命名规则

命名全部大写,使用下划线 _连接。

 #define 	SECONDS_PER_YEAR 	(60 * 60 * 24 * 365)UL

2、函数
序号描述
1一个函数 仅完成 一件功能
2重复代码 应该尽可能提炼成 函数
3避免函数的代码块嵌套过深
4对函数的错误返回码全面处理
5在源文件范围内声明定义的所有函数,除非外部可见,否则应该增加static关键字

3、质量保证
序号原则描述
1正确性程序要实现设计要求的功能
2简洁性程序易于理解并且易于实现
3可靠性程序在给定时间间隔和环境条件下,按设计要求成功运行程序的概率
4可维护性程序被修改的能力,包括纠错改进新需求功能规格变化的适应能力
5代码 可测试性软件发现故障并隔离定位故障的能力,以及在一定的时间和成本前提下,进行测试设计测试执行的能力
6代码 性能高效尽可能少地占用系统资源,包括内存和执行时间
7可移植性为了在原来设计的特定环境之外运行,对系统进行修改的能力

4、程序效率

在保证软件系统的 正确性、简洁、可维护性、可靠性 及 可测性的前提下,提高代码效率。


5、注释

优秀的代码 不写注释也可轻易读懂,注释无法把糟糕的代码变好,需要很多注释来解释的代码往往存在坏味道,需要重构


命名的 常用缩写
Primitive(原语)缩写翻译
receiverecv接收
sendsend发送
argumentarg-
bufferbuf-
commandcmd-
comparecmp-
configcfg-
devicedev-
errorerr-
hexadecimalhex-
initializeinit-
maximummax-
minimummin-
messagemsg-
parameterparam-
previousprev-
registerreg-
synchronizesync-
temptmp-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值