标识符命名基本要求
标识符是指用来识别某个实体的一个符号,在不同的应用环境下有不同的含义。
在计算机编程语言中,标识符是用户编程时使用的名字,用于给变量、常量、函数、语句块等命名,以建立起名称与使用之间的关系。
C语言的标识符一般应遵循如下的命名规则:
1、标识符必须以字母a~z、A~Z或下划线开头,后面可跟任意个(可为0)字符,这些字符可以是字母、下划线和数字,其他字符不允许出现在标识符中。
2、标识符区分大小写字母。
3、标识符的长度,c89规定31个字符以内,c99规定63个字符以内。
4、C语言中的关键字,有特殊意义,不能作为标识符。
5、自定义标识符最好取具有一定意义的字符串,便于记忆和理解。见文知义
标识符命名风格
在满足标识符命名基本要求的情况下,命名可以有很多种风格,命名风格属于编码风格的一部分。下面总结了几种常见的方法供参考:
1.驼峰式命名法(小驼峰式命名法)
驼峰式命名法,也称小驼峰式命名法(Lower Camel Case)。
骆驼式命名法就是当变量名或函数名是由一个或多个单词连结在一起,而构成的唯一识别字时,第一个单词以小写字母开始;从第二个单词开始以后的每个单词的首字母都采用大写字母,例如:myFirstName、myLastName,这样的变量名看上去就像骆驼峰一样此起彼伏,故得名。
骆驼式命名法在许多新的函数库和Microsoft Windows这样的环境中使用得相当多。
2.帕斯卡(Pascal)命名法(大驼峰式命名法)
帕斯卡命名法与骆驼命名法类似。也称大驼峰式命名法。
帕斯卡命名法指当变量名和函式名称是由二个或二个以上单词连结在一起,每个单词首字母大写。 单字之间不以空格断开或连接号(-)、底线(_)连结,第一个单词首字母采用大写字母;后续单词的首字母亦用大写字母,例如:FirstName、LastName。 也有人称之为大驼峰式命名法(Upper Camel Case) 。
在C++中,以帕斯卡命名法和骆驼命名法居多。
事实上,很多程序设计者在实际命名时会将骆驼命名法和帕斯卡结合使用,
例如变量名采用骆驼命名法,而函数采用帕斯卡命名法。
3.匈牙利命名法
据说这种命名法是一位叫 Charles Simonyi 的匈牙利程序员发明的,后来他在微软待了几年,于是这种命名法就通过微软的各种产品和文档资料向世界传播开了。 匈牙利命名法的基本原则是:变量名=属性+类型+对象描述 。
例子:
pfnEatApple : pfn 是类型描述,表示指向函数的指针, EatApple 是变量对象描述,所以它表示指向 EatApple 函数的函数指针变量。
hwnd : h 是类型描述,表示句柄, wnd 是变量对象描述,表示窗口,所以 hwnd 表示窗口句柄;
g_cch : g_ 是属性描述,表示全局变量,c 和 ch 分别是计数类型和字符类型,一起表示变量类型,这里忽略了对象描述,所以它表示一个对字符进行计数的全局变量。
(1)属性部分
g_ 全局变量
c_ 常量
m_ c++类成员变量
s_ 静态变量
(2)类型部分:
数组 a
指针 p
函数 fn
无效 v
句柄 h
长整型 l
布尔 b
浮点型(有时也指文件) f
双字 dw
字符串 sz
短整型 n
双精度浮点 d
计数 c(通常用cnt)
字符 ch(通常用c)
整型 i(通常用n)
字节 by
字 w
实型 r
无符号 u
(3)描述部分:
最大 Max
最小 Min
初始化 Init
临时变量 T(或Temp)
源对象 Src
目的对象 Dest
这种命名方法在我们嵌入式中也用得挺多的。对于一些常见类型的变量,在其名字前标注表示其类型的前缀,常用的前缀如:
为了清晰的标识变量的作用域,减少发生命名冲突,应该在变量类型前缀之前再加上表示变量作用域的前缀,并在变量类型前缀和变量作用域前缀之间用下划线 - 隔开。 如:
- 对于全局变量(global variable),在其名称前加g和变量类型符号前缀。
uint32_t g_ulParaWord;
uint8_t g_ucByte;
- 对于静态变量(static variable),在其名称前加s和变量类型符号前缀。
static uint32_t s_ulParaWord;
static uint8_t s_ucByte;
关于匈牙利命名法,有一些反对的声音,这些人觉得匈牙利命名法的收益是含糊的,无法预期的, 是比较冗余的。 有优点也有缺点,还是要看我们怎么命名。
4.下划线命名法
下划线命名法变量名和函式名称是由二个或二个以上单词连结在一起,每个单词用下划线隔开并且单词都是小写,例如:print_employee。
下划线命名法是随着C语言的出现流行起来的,在UNIX/LIUNX这样的环境,以及GNU代码中使用非常普遍。
在实际应用时,如果是自己新建项目开发,那么可以根据自己喜好选择命名方式。如果是在已有项目代码的基础上二次开发,原则上建议与已有的风格保持一致
参考:
https://code84.com/27043.html