三种命名规则之-----匈牙利命名规则

匈牙利命名法是微软推广的一种关于变量、函数、对象、前缀、宏定义等各种类型的符号的命名规范。匈牙利命名法的主要思想是:在变量和函数名中加入前缀以增进人们对程序的理解。

匈牙利命名法关键是:标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合,该单词要指明变量的用途。

前缀类型描述
aArray数组
bBOOL (int)
byUnsigned Char (Byte)无符号字(字节)
cChar字符(字节)
cbCount of bytes字节数
crColor reference value颜色(参考)值
cxCount of x (Short)x的集合(短整数)
dwDWORD(unsigned long)双字(无符号长整数)
fFlags (usually multiple bit values)标志(一般是有多位的数值)
fnFunction函数
g_global全局的
hHandle句柄
iInteger整数
lLong长整数
lpLong pointer长指针
m_Data member of a class一个类的数据成员
nShort int短整数
pPointer指针
sString字符串
szZero terminated String以0结尾的字符串
tmText metric文本规则
uUnsigned int无符号整数
ulUnsigned long (ULONG)无符号长整数
wWORD (unsigned short)无符号短整数
x,yx, y coordinates (short)坐标值/短整数
vvoid

有关项目的全局变量用g_开始,类成员变量用m_,局部变量若函数较大则可考虑用l_用以显示说明其是局部变量。

前缀类型例子
g_全局变量g_Servers
C类或者结构体CDocument,CPrintInfo
m_成员变量m_pDoc,m_nCustomers

|VC常用前缀列表:

前缀类型描述例子
chchar8位字符chGrade
chTCHAR16位UNICODE类型字符chName
bBOOL布尔变量bEnabled
nint整型(其大小由操作系统决定)nLength
nUINT无符号整型(其大小由操作系统决定)nLength
wWORD16位无符号整型wPos
lLONG32位有符号整型lOffset
dwDWORD32位无符号整型dwRange
p*Ambient memory model pointer 内存模块指针,指针变量pDoc
lpFAR*长指针lpDoc
lpszLPSTR32位字符串指针lpszName
lpszLPCSTR2位常量字符串指针lpszName
lpszLPCTSTR32位UNICODE类型常量指针lpszName
hhandleWindows对象句柄hWnd
lpfn(*fn)()回调函数指针 Callback Far pointer to CALLBACK functionlpfnAbort

可是在不论什么情况下,都硬性规定使用匈牙利命名法是迂腐的。尤其是 Unix 编程,在使用没有变量名、keyword自己主动补齐功能的编辑器,如 vi 下,去敲入大写和小写混合的变量名是痛苦的。事实上仅仅要注意两个原则:1) 含义清晰,不易混淆; 2) 不和其他模块、系统API的命名空间相冲突就可以。
1.有意识的为变量名、宏名加上本模块的keyword,就不至于和其他模块、系统API的命名空间相冲突;比如: 宏的名称过短,如:DEBUG; 或_DEBUG,非常可能和别的模块,系统模块相冲突;
2.局部变量尤其是循环变量外,使用约定俗成的 i,j,k ,没有问题;
3.宏、常量、枚举enum,所实用大写字母;
4.全局变量加上前缀 “g”,后面跟上首字母大写的单词;

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐