匈牙利命名法(Hungarian)

匈牙利命名法是电脑程式设计中的一种变量命名规则,此命名法又可细分为:系统匈牙利命名法和匈牙利应用命名法。原始的匈牙利命名法,现在被称为匈牙利应用命名法,由1972年至1981年在施乐帕洛阿尔托研究中心工作的-程序员查尔斯·西蒙尼(之后任微软总设计师)发明。此命名方法被微软公司广泛推广,以下重点讲述系统匈牙利命名法。

基本原则是:变量名=属性+类型+对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。命名要基于容易记忆容易理解的原则。

属性部分举例

序号

全名

属性名前缀

说明

1

global

g_

全局变量

2

const

c_

常量

3

member

m_

C++成员变量

4

static

s_

静态变量

类型部分举例

序号

全名

属性名前缀

说明

1

pointer

p

指针

2

function

fn

函数

3

handle

h

句柄

4

long

l

长整型

5

boolean

b

布尔

6

float

f

浮点型

7

double word

dw

双字

8

string with zero end

sz

字符串

9

short

n

短整型

10

double

d

双精度浮点

11

character

c

字符

12

integer

i

整型

13

real

r

实型

14

un

无符号

综合举例

序号

全名

属性名前缀

说明

1

bBusy

b

布尔

2

pszOwner

psz

指向零结束字符串的指针

系统匈牙利命名法和匈牙利应用命名法的区别

系统命名法与应用命名法的区别在于前缀的目的。

在系统匈牙利命名法中,前缀代表了变量的实际数据类型。例如:

lAccountNum:变量是一个长整数("l";

arru8NumberList:变量是一个无符号8位整型数组("arru8";

szName:变量是一个零结束字符串("sz"),这是西蒙尼最开始建议的前缀之一。

匈牙利应用命名法不表示实际数据类型,而是给出了变量目的的提示,或者说它代表了什么。

 rwPosition:变量代表一个行("rw")。

 usName:变量代表一个非安全字符串("us"),需要在使用前处理。

 strName:变量代表一个包含名字的字符串("str")但是没有指明这个字符串是如何实现的。

系统匈牙利命名法的优点

·从名字中就可以看出变量的类型。

·拥有类似语义的多个变量可以在一个代码块中使用(例如dwWidthfWidth)。

·变量名在仅仅知道他们的类型时可以被轻易记住。

·可以使变量名更加一致。

·决定一个变量名的时候可以更机械化,更快。

·不合适的类型转换和操作可以在阅读代码的时候被检测出来。

·在那些数字被当作字符串处理的基于字符串的语言中非常有用(例如Tcl)。

匈牙利系统命名法的缺点

·匈牙利命名法在编译器做类型检查时是多余的。一个提供类型检查的语言在确定一个变量与其类型一致时,比人眼仅仅检查变量的用法与变量名一致要强大的多。

·一些现代的集成开发环境,如Visual Studio在需要时可以显示变量类型,并且自动标记不匹配的类型。使用这种命名法完全没有必要。

·由于变量名和类型捆绑在一起,因此不利于代码的移植。一个典型的众所周之的例子就是WPARAM类型,以及在许多Windows系统函数声明中使用的wParam参数。它原本是一个16位的类型,但是在后来的操作系统中被改成了32位或64位,但仍保留原来的名字(它实际的基础类型是UINT_PTR,即一个大小足够保存一个指针的无符号整型)。

适用场景

早期程序设计、C++程序设计。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值