文件名:
文件名要全部小写,可以包含下划线 (_) 或连字符 (-).按项目约定来.
类:
类型名称的每个单词首字母均大写,不包含下划线: MyExcitingClass,MyExcitingEnum.
变量命名:
变量名一律小写,单词之间用下划线连接.类的成员变量以下划线结尾,结构体的数据成员可以和普通变量一样,不用像类那样接下划线:对全局变量没有特别要求,少用就好, 但如果你要用, 可以用g_或其它标志作为前缀,以便更好的区分局部变量.
作用域前缀:作用域前缀标明一个变量的可见范围。作用域可以有如下几种:
前缀 | 说明 | 例子 |
无 | 局部变量 | |
m_ | 类的成员变量(member) | Int m_width |
ms_ | 类的静态成员变量(static member) | static int ms_initValue; |
s_ | 静态变量(static) | static int s_initValue; |
g_ | 外部全局变量(global) | int g_howManyPeople; |
sg_ | 静态全局变量(static global) | |
gg_ | 进程间共享的共享数据段全局变量(global global) |
说明:作用域前缀不同于下面的类型前缀,应该坚决执行。原因是:
1)变量作用域和链接性改变的情况是很少的,例如,很少的情况下会把一个成员变量改成静态变量
2)编程中使用的工具常常不会直观的显示变量的作用域和链接性
类型前缀:作用域前缀标明一个变量的可见范围。类型前缀标明一个变量的类型,有如下几种:
前缀 | 说明 | 例子 |
b | 布尔型变量(bool, BOOL) | bEnable |
ch | 字符型变量(char TCHAR) | chName |
lpsz | LPSTR、LPCSTR、LPCTSTR | lpszName |
n | 整型和位域变量(int, UINT,__int32,__int64) | nLength |
l | long | lOffset |
by | BYTE | |
w | WORD | wPos |
dw | DWORD | dwRange |
f | 浮点型变量(float) | |
d | double | |
p | 指针型变量和迭代子(pointer) | pDoc |
lp | 远指针 | |
e | 枚举型变量(enumeration) | |
pfn | 特别针对指向函数的指针变量和函数对象指针(pointer of function) | |
g | 数组(grid) | |
h | handle Windows对象句柄 |
常量命名:
在名称前加k:kDaysInAWeek.
函数命名:
常规函数使用大小写混合,全局函数:以小写前缀"g"开头。
保护成员函数:开头应当加上一个下划线“_”以示区别,例如:"_SetState()",
私有成员函数:开头应当加上两个下划线“__”,例如:"__DestroyImp()",
虚函数:习惯以“Do”开头,如:"DoRefresh()",
回调和事件处理函数:习惯以单词“On”开头。
名字空间命名:
名字空间用小写字母命名,并基于项目名称和目录结构:
枚举命名:
枚举的命名应当和常量或宏一致: kEnumName或是ENUM_NAME.
类和接口
接口以大写"I"开头,代表Interface。
对象:
首单词首字母小写,后续首字母大写