首页 > 代码库 > C++命名规范

C++命名规范

转:原文链接

http://blog.sina.com.cn/s/blog_a3a8d0b1010100uw.html

一、 类和接口

1、 命名:类名都以大写字母“C”开头,后跟一个或多个单词。每个单词的首字母要大写。接口以大写"I"开头,代表Interface。

2、 组成形式:推荐用"名词"或"形容词+名词"的形式,例如:"CAnalyzer", "CFastVector" ....

二、 函数

1、 命名:函数的名称由一个或多个单词组成。每个单词的首字母要大写。最长不得超过20个字符。

2、 组成形式:全局函数应当使用"动词"或者"动词+名词"(动宾词组)的形式。例如:"GetName()", "DrawBox()"。

类成员函数应当只使用“动词”,被省略掉的名词就是对象本身。例如:

" box->Draw();"。

3、 全局函数:以小写前缀"g"或”m”开头。

4、 回调和事件处理函数:习惯以单词“On”开头。例如:"_OnTimer()", "OnExit()"

 

三、 变量

变量是程序中使用最多的标识符,变量的命名规范是一套C++命名规范中最重要的部分:

1、 命名:变量名由作用域前缀+类型前缀+一个或多个单词组成。变量用小写字母开头的单词组合而成,第二个单词的首字母要大写。例如:int nDrawMode。变量最长不得超过20个字符。

特殊的:对于某些用途简单明了的局部变量,也可以使用简化的方式,如:i, j, k, x, y, z

2、 组成形式:变量的名字应当使用"名词"或者"形容词+名词"。例如:"nCode", "m_nState","nMaxWidth"," oldValue "," newValue "。

3、 作用域前缀:作用域前缀标明一个变量的可见范围。作用域可以有如下几种:

前缀

说明

例子

局部变量

 

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)编程中使用的工具常常不会直观的显示变量的作用域和链接性

4、 类型前缀:作用域前缀标明一个变量的可见范围。类型前缀标明一个变量的类型,有如下几种:

前缀

说明

例子

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对象句柄

hWnd

四、 常量

常量名由全大写字母组成,单词间通过下划线来界定,如: DELIMITER, MAX_BUFFER。类型前缀的定义与变量命名规则中的相同。

五、 结构体、宏、枚举变量、联合体

全部由前缀+大写字母组成,单词间使用下划线界定。

1、 结构体:加小写前缀"_"或"__" ,之后以大写字母开头。

例:

typedef struct _point

{

int x;

int y;

} POINT;

2、 宏:大写字母组成,单词间使用下划线界定

例:#define MAXNUMBER 100

3、 枚举变量:加小写前缀"enum"。

例:

typedef enum _file_open_mode

{

OPEN_READONLY,

OPEN_READWRITE

}FILE_OPEN_MODE;

C++命名规范