匈牙利命名法是一种编程时的命名规范。基本原则是:变量名=属性+类型+对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。命名要基于容易记忆容易理解的原则。保证名字的连贯性是非常重要的。
举例来说,表单的名称为form,那么在匈牙利命名法中可以简写为frm,则当表单变量名称为Switchboard时,变量全称应该为frmSwitchboard。这样可以很容易从变量名看出Switchboard是一个表单,同样,如果此变量类型为标签,那么就应命名成lblSwitchboard。可以看出,匈牙利命名法非常便于记忆,而且使变量名非常清晰易懂,这样,增强了代码的可读性,方便各程序员之间相互交流代码。
这种命名技术是由一位能干的Microsoft程序员查尔斯·西蒙尼(Charles Simonyi) 提出的,他出生在匈牙利。在 Microsoft 公司中和他一起工作的人被教会使用这种约定。这对他们来说一切都很正常。但对那些 Simonyi 领导的项目组之外的人来说却感到很奇特,他们认为这是死板的表达方式,甚至说带有这样奇怪的外观是因为它是用匈牙利文写的。从此这种命名方式就被叫做匈牙利命名法。
/结构
除了异常类等个别情况(不希望用户把该类看作一个普通的、正常的类之情况)外,C++/结构
的命名应该遵循以下准则:
C++/结构的命名
类的名称都要以大写字母C”开头,后跟一个或多个单词。为便于界定,每个单词的首字母要大写。
 
推荐的组成形式
类的命名推荐用"名词""形容词+名词"的形式,例如:"CAnalyzer", "CFastVector" ....
不同于C++类的概念,传统的C结构体只是一种将一组数据捆绑在一起的方式。传统C结构体的命名规则为:
传统C结构体的命名
传统C结构体的名称全部由大写字母组成,单词间使用下划线界定,例如:"SERVICE_STATUS", "DRIVER_INFO" ....
 
函数
函数的命名
函数的名称由一个或多个单词组成。为便于界定,每个单词的首字母要大写。
 
推荐的组成形式
函数名应当使用"动词"或者"动词+名词"(动宾词组)的形式。例如:"GetName()", "SetValue()", "Erase()", "Reserve()" ....
 
保护成员函数
保护成员函数的开头应当加上一个下划线_”以示区别,例如:"_SetState()" ....
 
私有成员函数
类似地,私有成员函数的开头应当加上两个下划线__”,例如:"__DestroyImp()" ....
 
虚函数
虚函数习惯以Do”开头,如:"DoRefresh()", "_DoEncryption()" ....
 
回调和事件处理函数
回调和事件处理函数习惯以单词On”开头。例如:"_OnTimer()", "OnExit()" ....
 
变量
变量应该是程序中使用最多的标识符了,变量的命名规范可能是一套C++命名准则中最重要的部分:
变量的命名
变量名由作用域前缀+类型前缀+一个或多个单词组成。为便于界定,每个单词的首字母要大写。
对于某些用途简单明了的局部变量,也可以使用简化的方式,如:i, j, k, x, y, z .m ,n ...
 
作用域前缀
作用域前缀标明一个变量的可见范围。作用域可以有如下几种:
前缀
说明
局部变量
m_
类的成员变量(member
sm_
类的静态成员变量(static member
s_
静态变量(static
g_
外部全局变量(global
sg_
静态全局变量(static global
gg_
进程间共享的共享数据段全局变量(global global
除非不得已,否则应该尽可能少使用全局变量。
 
类型前缀
类型前缀标明一个变量的类型,可以有如下几种:
前缀
说明
n
整型和位域变量(number
e
枚举型变量(enumeration
c
字符型变量(char
b
布尔型变量(bool
f
浮点型变量(float
p
指针型变量和迭代子(pointer
pfn
特别针对指向函数的指针变量和函数对象指针(pointer of function
g
数组(grid
i
类的实例(instance
对于经常用到的类,也可以定义一些专门的前缀,如:std::stringstd::wstring类的前缀可以定义为"st"std::vector类的前缀可以定义为"v"指针拼音等等。
类型前缀可以组合使用,例如"gc"表示字符数组,"ppn"表示指向整型的指针的指针等等。
 
推荐的组成形式
变量的名字应当使用"名词"或者"形容词+名词"。例如:"nCode", "m_nState""nMaxWidth" ....
 
常量
C++中引入了对常量的支持,常量的命名规则如下:
常量的命名
常量名由类型前缀+全大写字母组成,单词间通过下划线来界定,如:cDELIMITER, nMAX_BUFFER ....
类型前缀的定义与变量命名规则中的相同。
 
枚举、联合、typedef
枚举、联合及typedef语句都是定义新类型的简单手段,它们的命名规则为:
枚举、联合、typedef的命名
枚举、联合、typedef语句生成的类型名由全大写字母组成,单词间通过下划线来界定,如:FAR_PROC, ERROR_TYPE ....
 
宏、枚举值
宏、枚举值的命名
宏和枚举值由全大写字母组成,单词间通过下划线来界定,如:ERROR_UNKNOWN, OP_STOP ....
前缀
类型
描述
实例
c
char
8位字符
cGrade
str
string
字符型
strName
ch
TCHAR
如果_UNICODE定义,则为16位字符
chName
b
BOOL
布尔值
bEnable
n ,i
int
整型(其大小依赖于操作系统)
nLength
si
short int
短整型
siSequ
n
UINT
无符号值(其大小依赖于操作系统)
nHeight
w
WORD
16位无符号值
wPos
f
float
浮点型
fRadius
d
double
双精度型
dArea
l
LONG
长整型
lOffset
ld
long double
长双精度型
ldRate
dw
DWORD
32位无符号整型
dwRange
p
*
指针
pDoc
lp
FAR*
远指针
lpszName
lpsz
LPSTR
32位字符串指针
lpszName
lpsz
LPCSTR
32位常量字符串指针
lpszName
lpsz
LPCTSTR
如果_UNICODE定义,则为32位常量字符串指针
lpszName
h
handle
Windows对象句柄
hWnd
lpfn
callback
指向CALLBACK函数的远指针
?
if
输入文件流
ifDataFile
of
输出文件流
ofStuFile
sz
"\0"结束的字符串
szAppName

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。