匈牙利命名法

时间:2009-6-14     作者:smarteng     分类: 经典算法


匈牙利命名法是一种编程时的命名规范。基本原则是:变量名=属性+类型+对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。命名要基于容易记忆容易理解的原则。保证名字的连贯性是非常重要的。 [break]

据说这种命名法是一位叫 Charles Simonyi 的匈牙利程序员发明的,后来他在微软呆了几年,于是这种命名法就通过微软的各种产品和文档资料向世界传播开了。现在,大部分程序员不管自己使用什么软件进行开发,或多或少都使用了这种命名法。这种命名法的出发点是把量名变按:属性+类型+对象描述的顺序组合起来,以使程序员作变量时对变量的类型和其它属性有直观的了解,下面是HN变量命名规范,其中也有一些是我个人的偏向:
a Array
b Boolean
by Byte
c Char //有符号型字符
cb Char Byte //无符号型字符(没多大用处)
cr ColorRef //颜色参考值
cx,cy Length of x,y (ShortInt) //坐标差(长度)
dw Double Word
fn Function
h Handle
// 本文转自 C Builder研究 - http://www.ccrun.com/article.asp?i=357&d=m6o7tx
i Integer
m_ Member of a class
n Short Integer
np Near Pointer
p Pointer lp Long Pointer
s String
sz String with Zero End //以字符'\0'结尾的字符串
tm Text //文本内容
w Word
x,y Coordinate //坐标

类名一般没有说明字符,例如theApp. 用在其他类中加m_就行。要注意的是:某些类也有类似于匈牙利命名法的缩写。例如:CStatusBar m_wndStatusBar;这里的wnd表示窗口类,但是这种命名法不是标准的匈牙利命名法的一部分。

这个方法可能很多人都听说过,包括我在内的一些人也试图去使用它,可是还是觉得自己的好,但是现在看来这种想法是错误的。再解释解释吧。这些符号可以多个同时使用,顺序是先m_,(这上标记指成员变量)再指针,再简单数据类型,再其他。例如:m_lpszStr, 表示指向一个以0字符结尾的字符串的长指针成员变量。

a Array
b Boolean
by Byte
c Char //有符号型字符
cb Char Byte //无符号型字符(没多大用处)
cr ColorRef //颜色参考值
cx,cy Length of x,y (ShortInt) //坐标差(长度)
dw Double Word
fn Function
h Handle
// 本文转自 C Builder研究 - http://www.ccrun.com/article.asp?i=357&d=m6o7tx
i Integer
m_ Member of a class
n Short Integer
np Near Pointer
p Pointer lp Long Pointer
s String
sz String with Zero End //以字符'\0'结尾的字符串
tm Text //文本内容
w Word
x,y Coordinate //坐标

类名一般没有说明字符,例如theApp. 用在其他类中加m_就行。要注意的是:某些类也有类似于匈牙利命名法的缩写。例如:CStatusBar m_wndStatusBar;这里的wnd表示窗口类,但是这种命名法不是标准的匈牙利命名法的一部分。