变量的函数命名规则,一般有这么几种:
1. 帕斯卡规则(pascal ),如 Windows Api 的命名规则(CreateFile/GetDiskFreeSpaceEx),Java 类名
2. 骆驼规则(camel),如Java方法名(readByte)
3. 下划线分隔单词规则,如C++标准库(lower_bound/equal_range)
4. 小写无分隔,如unix(posix)的很多函数名(getpagesize),但这类大部分使用缩写(mmap/sysconf)
5. 帕斯卡规则再加下划线分隔,ACE使用这种规则(ACE_Event_Handler )
6. 全部大写再加下划线分隔,如C 语言的宏名(BOOST_CURRENT_FUNCTION/BOOST_STATIC_CONSTANT)
7. 全部大写,只在类别后面用用下划线分隔,如Windows 中的消息名(WM_ACTIVATETOPLEVEL)
8. 全部大写无分隔,如Windows中的结构名
9.匈牙利命名法则,如Windows变量名
这几种规则,前3种被大家看好,以下就举一些反例:
1. 单词的分界在视觉上感觉不舒服,主要是以f/l/d 作为分界时(GlobalAlloc,ReadFile),和下一个单词的首字母大写有些混淆
2.的缺点跟1一样
3. 在名称比较短时还行,不过这类名称一般也的确 比较短。下划线分隔,有时略显啰嗦,如getpage,就get_page,来得简明舒服一些
下面是我认为比较好的一套命名规则:
宏名:全部大写,只在类别后面用用下划线分隔,如(BOOST_CURRENT_FUNCTION/BOOST_STATIC_CONSTANT)
局部变量名:骆驼规则和简单变量,如(appName,i)
全局变量名:骆驼规则加 global前缀,如(globalProductName)
自定义类型名:下划线分隔单词规则加_t后缀,如(typedef enum error_e error_t;)
函数名:下划线分隔单词规则,如(lower_bound/equal_range)