2024年4月30日发(作者:)

可编辑

C++语言程序设计代码规范

1 命名规范

本规范对变量、函数、类(结构)等的名称有严格的规定,在编码过程中务必遵守。

1.1 变量命名规范

变量名称采用匈牙利命名法,即:完整的名称由“缀”和“主体”复合而成。“缀”用于指示变

量的种类、数值类型、作用域等属性,由小写字符和下划线(_)组成,根据其附着在“主体”的位

置分为前缀和后缀两种。“主体”表示变量的语义。

整个变量名称的格式如下:

<作用域前缀>[<指针缀>]<类型缀><主体><作用域后缀>

下面详细论述。

1.1.1 作用域缀(前缀和后缀)

作用域前缀处在整个变量名的最前面。常用的作用域前缀为:

g_

m_

s_

_(前缀)

_(后缀)

表明这是一个全局变量。

表明这是一个类成员变量。

表明这是一个静态(static)变量。

表明这是一个局部变量。参看后面详细解释。

表明这是一个参数变量。参看后面详细解释。

作用域后缀处在整个变量名的最后面。只有一种情况使用作用域后缀,就是函数的形参必须以作

用域后缀结束。

1.1.2 指针缀

如果一个变量是指针,则必须使用指针缀。指针缀使用字母p表示。

以前,在DOS平台下有短指针和长指针的区别,有时称长指针为lp。在Win32平台下已经不存

在这个区别了,所以统一使用p, 而不是lp。

1.1.3 类型缀

类型缀由小写字符构成,用于描述变量的类型。注意:

1. 不要私自创造出各种各样的前缀。

2. 也没有必要在前缀中仔细区分一些细小的类型区别,那样会给代码维护工作带来额外的麻烦。

常用的类型前缀为:

n 用于一般情况下的各种整数、浮点数、枚举类型,包括:(unsigned)

int, (unsigned) long, 和一些派生类型:UINT, ULONG,WORD,DWORD

等。

bool 类型 b

精品

可编辑

p

h

sz

wnd

pt

clr

dc

pen

brush

vector

list

map

array

it

c, w, dw

表示指针,在Win32平台下使用p, 而不是lp。

Windows API内部的各种HANDLE。

char 或者 char_w类型的数组或者字符串常量。

Windows窗口,所有MFC窗口对象都以wnd缀开头。包括:CView,

CDialog,CFrameWnd,CButton等。

POINT, CPoint

COLORREF,其它用来表示颜色的数值类型

CDC类

CPen

CBrush

std::vector

std::list, CList

std::map, CMap

CArray

std::iterator

用于要求明确区分数据类型长度的情况下,如跨平台的网络通讯,或

磁盘读取。注意,尽量使用n作为前缀,而不是这些字符前缀。

对于其他不在上面表中的结构、类等复杂数据类型,特别是不常使用的和不通用的,不使用前缀。

例如:

class Person Jonson;

struct DateTime MyDt;

在应用场合明确的情况下,例如:简单的局部变量,它的值类型前缀有时可以省略。具体见下面

的例子。

1.1.4 复合前缀

根据以上规则,变量根据它所在的作用域、类型、是否是指针,得到一个复合前缀。例如:

char g_szFileName[_MAX_PATH]; //全局字符串变量

char* g_pszFileName; //全局字符串指针变量:

char s_szFileName[_MAX_PATH]; //静态字符串变量

char* s_pszFileName; //静态字符串指针变量:

char _s_szFileName[_MAX_PATH]; //局部静态字符串变量

char* _s_pszFileName; //局部静态字符串指针变量:

char m_szFileName[_MAX_PATH]; //类字符串变量

char* m_pszFileName; //类字符串指针变量:

char ms_szFileName[_MAX_PATH]; //类静态字符串变量

char* ms_pszFileName; //类静态字符串指针变量:

更多的例子,参见下面按照作用域讨论变量名一节。

1.1.5 主体

用于描述变量的上下文意义。

精品