匈牙利命名规则
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
字符
b BOOL
布尔值
bEnable
n ,i int
整型(其大小依赖于操作系统)nLength
si short int 短整型
siSequ
n UINT
无符号值(其大小依赖于操作系 nHeight
统)
w WORD
16 位无符号值
wPos
f float 浮点型
fRadius
d double 双精度型
dArea
对未给出的变量类型要求提出并给出命名建议给技术委员会。
②、指针变量命名的基本原则为: 对一重指针变量的基本原则为: “p”+变量类型前缀+命名 如一个 float*型应该表示为 pfStat 对多重指针变量的基本规则为: 二重指针: “pp”+变量类型前缀+命名 三重指针: “ppp”+变量类型前缀+命名 ...... ③、全局变量用 g_开头,如一个全局的长型变量定义为 g_lFailCount,即:变量名 =g_+变量类型+变量的英文意思(或缩写) ④、静态变量用 s_开头,如一个静态的指针变量定义为 s_plPerv_Inst,即: 变量名 =s_+变量类型+变量的英文意思(或缩写) ⑤、成员变量用 m_开头,如一个长型成员变量定义为 m_lCount;即:变量名=m_+ 变量类型+变量的英文意思(或缩写) ⑥、对枚举类型(enum)中的变量,要求用枚举变量或其缩写做前缀。并且要
类型前缀可以组合使用,例如"gc"表示字符 数组,"ppn"表示指向整型的指针的指针等 等。
变量的名字应当使用"名词"或者"形容词+ 名词"。例如:"nCode", "m_nState", "nMaxWidth" ....
常量
C++中引入了对常量的支持,常量的命名规则如下:
常量的命名
常量名由类型前缀+全大写字母组成,单词 间通过下划线来界定,如:cDELIMITER, nMAX_BUFFER ....
求用大写。 如:enum cmEMDAYS { EMDAYS_MONDAY; EMDAYS_TUESDAY; …… }; ⑦、对 struct、union、class 变量的命名要求定义的类型用大写。并要加上前缀, 其内部变量的命名规则与变量命名规则一致。 结构一般用 S 开头 如:struct ScmNPoint { int nX;//点的 X 位置 int nY; //点的 Y 位置 }; 联合体一般用 U 开头 如: union UcmLPoint { long lX; long lY; } 类一般用 C 开头 如: class CcmFPoint { public: float fPoint; }; 对一般的结构应该定义为类模板,为以后的扩展性考虑
类似地,私有成员函数的开头应当加上两个 下划线“__”,例如:"__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)
类型前缀的定义与变量命名规则中的相同。
枚举、联合、typedef
枚举、联合及 typedef 语句都是定义新类型的简单手段,它们的命名规则为:
枚举、联合、typedef 的 枚举、联合、typedef 语句生成的类型名由全
命名
大写字母组成,单词间通过下划线来界定,
如:FAR_PROC, ERROR_TYPE ....
szAppName
二、命名规则: 1、变量名的命名规则 ①、变量的命名规则要求用“匈牙利法则”。即开头字母用变量的类型,其余部 分用变量的英文意思或其英文意思的缩写,尽量避免用中文的拼音,要求单词的第 一个字母应大写。 即: 变量名=变量类型+变量的英文意思(或缩写) 对非通用的变量,在定义时加入注释说明,变量定义尽量可能放在函数的开始处。 见下表: bool(BOOL) 用 b 开头 bIsParent byte(BYTE) 用 by 开头 byFlag short(int) 用 n 开头 nStepCount long(LONG) 用 l 开头 lSum char(CHAR) 用 c 开头 cCount float(FLOAT) 用 f 开头 fAvg double(DOUBLE) 用 d 开头 dDeta void(VOID) 用 v 开头 vVariant unsigned int(WORD) 用 w 开头 wCount unsigned long(DWORD) 用 dw 开头 dwBroad HANDLE(HINSTANCE) 用 h 开头 hHandle DWORD 用 dw 开头 dwWord LPCSTR(LPCTSTR) 用 str 开头 strString 用 0 结尾的字符串 用 sz 开头 szFileName
这种命名技术是由一位能干的 Microsoft 程序员查尔斯·西蒙尼(Charles Simonyi) 提出的,他出生在匈牙利。在 Microsoft 公司中和他一起工作的人被 教会使用这种约定。这对他们来说一切都很正常。但对那些 Simonyi 领导的项 目组之外的人来说却感到很奇特,他们认为这是死板的表达方式,甚至说带有这 样奇怪的外观是因为它是用匈牙利文写的。从此这种命名方式就被叫做匈牙利命 名法。
不同于 C++类的概念,传统的 C 结构体只是一种将一组数据捆绑在一起的方 式。传统 C 结构体的命名规则为:
传统 C 结构体的命名
传统 C 结构体的名称全部由大写字母组成, 单词间使用下划线界定,例如: "SERVICE_STATUS", "DRIVER_INFO" ....
函数
函数的命名
函数的名称由一个或多个单词组成。为便于 界定,每个单词的首字母要大写。
l LONG
长整型
lOffset
long ld
double
长双精度型
ldRate
dw DWORD 32 位无符号整型
dwRange
p*
指针
pDoc
lp FAR*
远指针
lpszName
lpsz LPSTR 32 位字符串指针
lpszName
lpsz LPCSTR 32 位常量字符串指针
lpszName
推荐的组成形式
函数名应当使用"动词"或者"动词+名词" (动宾词组)的形式。例如:"GetName()", "SetValue()", "Erase()", "Reserve()" ....
保护成员函数
保护成员函数的开头应当加上一个下划线 “_”以示区别,例如:"_SetState()" ....
私有成员函数
如: template class CcmTVector3d { public: TYPE x,y,z; }; ⑧、对常量(包括错误的编码)命名,要求常量名用大写,常量名用英文表达其
意思
Biblioteka Baidu
匈牙利命名法是一种编程时的命名规范。基本原则是:变量名=属性+类型+对 象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的 一部分。命名要基于容易记忆容易理解的原则。保证名字的连贯性是非常重要的。
举例来说,表单的名称为 form,那么在匈牙利命名法中可以简写为 frm,则当表 单变量名称为 Switchboard 时,变量全称应该为 frmSwitchboard。这样可以很 容易从变量名看出 Switchboard 是一个表单,同样,如果此变量类型为标签,那 么就应命名成 lblSwitchboard。可以看出,匈牙利命名法非常便于记忆,而且 使变量名非常清晰易懂,这样,增强了代码的可读性,方便各程序员之间相互交 流代码。
类/结构
除了异常类等个别情况(不希望用户把该类看作一个普通的、正常的类之情 况)外,C++类/结构 的命名应该遵循以下准则:
C++类/结构的命名
类的名称都要以大写字母“C”开头,后跟一 个或多个单词。为便于界定,每个单词的首 字母要大写。
推荐的组成形式
类的命名推荐用"名词"或"形容词+名词"的 形式,例如:"CAnalyzer", "CFastVector" ....
pfn
特别针对指向函数的指
针变量和函数对象指针
(pointer of
function)
g
数组(grid)
i
类的实例(instance)
对于经常用到的类,也 可以定义一些专门的前 缀,如:std::string 和 std::wstring 类的 前缀可以定义为"st", std::vector 类的前缀 可以定义为"v"等等。
如果_UNICODE 定义,则为 32 位
lpsz LPCTSTR
lpszName
常量字符串指针
h handle Windows 对象句柄
hWnd
lpfn callback 指向 CALLBACK 函数的远指针
?
if
输入文件流
ifDataFile
of
输出文件流
ofStuFile
sz
以"\0"结束的字符串
宏、枚举值
宏、枚举值的命名
宏和枚举值由全大写字母组成,单词间通过 下划线来界定,如: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
对未给出的变量类型要求提出并给出命名建议给技术委员会。
②、指针变量命名的基本原则为: 对一重指针变量的基本原则为: “p”+变量类型前缀+命名 如一个 float*型应该表示为 pfStat 对多重指针变量的基本规则为: 二重指针: “pp”+变量类型前缀+命名 三重指针: “ppp”+变量类型前缀+命名 ...... ③、全局变量用 g_开头,如一个全局的长型变量定义为 g_lFailCount,即:变量名 =g_+变量类型+变量的英文意思(或缩写) ④、静态变量用 s_开头,如一个静态的指针变量定义为 s_plPerv_Inst,即: 变量名 =s_+变量类型+变量的英文意思(或缩写) ⑤、成员变量用 m_开头,如一个长型成员变量定义为 m_lCount;即:变量名=m_+ 变量类型+变量的英文意思(或缩写) ⑥、对枚举类型(enum)中的变量,要求用枚举变量或其缩写做前缀。并且要
类型前缀可以组合使用,例如"gc"表示字符 数组,"ppn"表示指向整型的指针的指针等 等。
变量的名字应当使用"名词"或者"形容词+ 名词"。例如:"nCode", "m_nState", "nMaxWidth" ....
常量
C++中引入了对常量的支持,常量的命名规则如下:
常量的命名
常量名由类型前缀+全大写字母组成,单词 间通过下划线来界定,如:cDELIMITER, nMAX_BUFFER ....
求用大写。 如:enum cmEMDAYS { EMDAYS_MONDAY; EMDAYS_TUESDAY; …… }; ⑦、对 struct、union、class 变量的命名要求定义的类型用大写。并要加上前缀, 其内部变量的命名规则与变量命名规则一致。 结构一般用 S 开头 如:struct ScmNPoint { int nX;//点的 X 位置 int nY; //点的 Y 位置 }; 联合体一般用 U 开头 如: union UcmLPoint { long lX; long lY; } 类一般用 C 开头 如: class CcmFPoint { public: float fPoint; }; 对一般的结构应该定义为类模板,为以后的扩展性考虑
类似地,私有成员函数的开头应当加上两个 下划线“__”,例如:"__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)
类型前缀的定义与变量命名规则中的相同。
枚举、联合、typedef
枚举、联合及 typedef 语句都是定义新类型的简单手段,它们的命名规则为:
枚举、联合、typedef 的 枚举、联合、typedef 语句生成的类型名由全
命名
大写字母组成,单词间通过下划线来界定,
如:FAR_PROC, ERROR_TYPE ....
szAppName
二、命名规则: 1、变量名的命名规则 ①、变量的命名规则要求用“匈牙利法则”。即开头字母用变量的类型,其余部 分用变量的英文意思或其英文意思的缩写,尽量避免用中文的拼音,要求单词的第 一个字母应大写。 即: 变量名=变量类型+变量的英文意思(或缩写) 对非通用的变量,在定义时加入注释说明,变量定义尽量可能放在函数的开始处。 见下表: bool(BOOL) 用 b 开头 bIsParent byte(BYTE) 用 by 开头 byFlag short(int) 用 n 开头 nStepCount long(LONG) 用 l 开头 lSum char(CHAR) 用 c 开头 cCount float(FLOAT) 用 f 开头 fAvg double(DOUBLE) 用 d 开头 dDeta void(VOID) 用 v 开头 vVariant unsigned int(WORD) 用 w 开头 wCount unsigned long(DWORD) 用 dw 开头 dwBroad HANDLE(HINSTANCE) 用 h 开头 hHandle DWORD 用 dw 开头 dwWord LPCSTR(LPCTSTR) 用 str 开头 strString 用 0 结尾的字符串 用 sz 开头 szFileName
这种命名技术是由一位能干的 Microsoft 程序员查尔斯·西蒙尼(Charles Simonyi) 提出的,他出生在匈牙利。在 Microsoft 公司中和他一起工作的人被 教会使用这种约定。这对他们来说一切都很正常。但对那些 Simonyi 领导的项 目组之外的人来说却感到很奇特,他们认为这是死板的表达方式,甚至说带有这 样奇怪的外观是因为它是用匈牙利文写的。从此这种命名方式就被叫做匈牙利命 名法。
不同于 C++类的概念,传统的 C 结构体只是一种将一组数据捆绑在一起的方 式。传统 C 结构体的命名规则为:
传统 C 结构体的命名
传统 C 结构体的名称全部由大写字母组成, 单词间使用下划线界定,例如: "SERVICE_STATUS", "DRIVER_INFO" ....
函数
函数的命名
函数的名称由一个或多个单词组成。为便于 界定,每个单词的首字母要大写。
l LONG
长整型
lOffset
long ld
double
长双精度型
ldRate
dw DWORD 32 位无符号整型
dwRange
p*
指针
pDoc
lp FAR*
远指针
lpszName
lpsz LPSTR 32 位字符串指针
lpszName
lpsz LPCSTR 32 位常量字符串指针
lpszName
推荐的组成形式
函数名应当使用"动词"或者"动词+名词" (动宾词组)的形式。例如:"GetName()", "SetValue()", "Erase()", "Reserve()" ....
保护成员函数
保护成员函数的开头应当加上一个下划线 “_”以示区别,例如:"_SetState()" ....
私有成员函数
如: template class CcmTVector3d { public: TYPE x,y,z; }; ⑧、对常量(包括错误的编码)命名,要求常量名用大写,常量名用英文表达其
意思
Biblioteka Baidu
匈牙利命名法是一种编程时的命名规范。基本原则是:变量名=属性+类型+对 象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的 一部分。命名要基于容易记忆容易理解的原则。保证名字的连贯性是非常重要的。
举例来说,表单的名称为 form,那么在匈牙利命名法中可以简写为 frm,则当表 单变量名称为 Switchboard 时,变量全称应该为 frmSwitchboard。这样可以很 容易从变量名看出 Switchboard 是一个表单,同样,如果此变量类型为标签,那 么就应命名成 lblSwitchboard。可以看出,匈牙利命名法非常便于记忆,而且 使变量名非常清晰易懂,这样,增强了代码的可读性,方便各程序员之间相互交 流代码。
类/结构
除了异常类等个别情况(不希望用户把该类看作一个普通的、正常的类之情 况)外,C++类/结构 的命名应该遵循以下准则:
C++类/结构的命名
类的名称都要以大写字母“C”开头,后跟一 个或多个单词。为便于界定,每个单词的首 字母要大写。
推荐的组成形式
类的命名推荐用"名词"或"形容词+名词"的 形式,例如:"CAnalyzer", "CFastVector" ....
pfn
特别针对指向函数的指
针变量和函数对象指针
(pointer of
function)
g
数组(grid)
i
类的实例(instance)
对于经常用到的类,也 可以定义一些专门的前 缀,如:std::string 和 std::wstring 类的 前缀可以定义为"st", std::vector 类的前缀 可以定义为"v"等等。
如果_UNICODE 定义,则为 32 位
lpsz LPCTSTR
lpszName
常量字符串指针
h handle Windows 对象句柄
hWnd
lpfn callback 指向 CALLBACK 函数的远指针
?
if
输入文件流
ifDataFile
of
输出文件流
ofStuFile
sz
以"\0"结束的字符串
宏、枚举值
宏、枚举值的命名
宏和枚举值由全大写字母组成,单词间通过 下划线来界定,如:ERROR_UNKNOWN, OP_STOP ....
前缀 类型
描述
实例
c char
8 位字符
cGrade
str string 字符型
strName
ch TCHAR
如果_UNICODE 定义,则为 16 位 chName