匈牙利命名法
匈牙利命名法是一种编程时的命名规范。基本原则是:变量名=属性+类型+对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。要基于容易记忆容易理解的原则。保证名字的连贯性是非常重要的。
据说这种命名法是一位叫 Charles Simonyi 的匈牙利程序员发明的,后来他在微软呆了几年,于是这种命名法就通过微软的各种产品和文档资料向世界传播开了。大部分程序员不管自己使用什么软件进行开发,或多或少都使用了这种命名法。
举例来说,表单的名称为form,那么在匈牙利命名法中可以简写为frm,则当表单变量名称为Switchboard时,变量全称应该为 frmSwitchboard。这样可以很容易从变量名看出Switchboard是一个表单,同样,如果此变量类型为标签,那么就应命名成 lblSwitchboard。可以看出,匈牙利命名法非常便于记忆,而且使变量名非常清晰易懂,这样,增强了代码的可读性,方便各程序员之间相互交流代码。下面,我们分别来看一下应用性匈牙利命名法和系统性匈牙利命名法。

1. 应用型匈牙利命名法
Simonyi 的匈牙利命名法的原型在微软公司内部最初被叫做“应用型匈牙利命名法”(Apps Hungarian),因为它是在“应用程序部”(Applications Division)中使用的,也就是用在 Word 和 Excel 身上。在 Excel 的源码中,你可以看到大量的 rw 和 col 。
使用这种“应用型匈牙利命名法”,我们可以在看到变量后很快理解其含义,并很容易发现代码中的问题。
例如在代码中看到 xl = cb,
xl 表示“相对于页面的横坐标”,horizontal coordinates relatives to the layout;cb 表示“字节个数”,count of bytes
显然是有问题的,虽然 xl 和 cb 都是整数,但是这二者之间的赋值基本一定会导致 bug。
2. 系统型匈牙利命名法
然而,一定程度上由于 Simonyi 自己在编写文档时,用了“type”这个词,而不是“kind”,于是被人误以为 Simonyi 指的是数据类型。尽管 Simonyi 很详细、很准确地解释了他所说的“type”到底是什么意思。可惜于事无补,危害已经酿成了。悲剧的结果就是产生了我们现在熟悉的“系统型匈牙利命名法”(System Hungarian)。
还是上面的例子,改用“系统型匈牙利命名法”以后,可以改成 nWidth = nCount,看起来好像还不错哈~
bug 就是这样隐藏起来的。
“应用型匈牙利命名法”的前缀是非常有用的、有含义的,比如:
“ix” 表示数组的索引值(index)
“c” 表示一个计数器(count)
“d” 表示两个数量之间的差(difference),“dx” 就可以表示宽度
“系统性匈牙利命名法”的前缀就差远了,比如
“l” 表示长整型(long)
“ul” 表示无符号长整型(unsigned long)
“dw” 表示双精度值(double word),这实际上也是一个无符号的长整型
这种差别虽然细微,但是完全误解了 Simonyi 的意图和做法。“系统型匈牙利命名法”传播的又远又广,在 Windows 编程文档中,它是标准的变量命名法。难怪很多人都觉得匈牙利命名法很奇怪、很别扭。
- 相关文章
- • 热血传奇游戏名字
- • 国外明星英文名字
- • 判断汉字五行方法
- • qq群名字大全 超拽
- • 姓名影响宝宝未来事业
- • 给商铺起个好名字的方法
- • 设计公司2字的有关起名名称大全
- • 关于海鲜面馆的笑话
- • 《敢死队3》演员名字大全
- • 企业品牌名称定位方法
- 推荐阅读
- • 世东国际
- • 信息时代,如何快速提升企业知名度
- • 2014年公司起名新趋势
- • 深交所上市地产百强中弘股份签约先知
- • 上海优喜洗烫公司签约先知中国
- • 车娃娃
- • 2017年公司起名大全
- • 慈壹
- • 北京乐觅餐饮集团再次签约先知中国
- • 鸿科命名
-
- 先知公司测名系统
- 客户评价
-
新辣道董事长李剑先知中国在文化方面的竞争力给我留下了深刻印象,理论清晰、经验丰富、很有智慧。通过专业的定位命名及文化定向,后期的形象落地 为品牌积累了非常强的势能,为企业的持续发展提供源源不绝的动力。
-
朵唯手机副总经理赵勇先知中国的名字起得很好,实际证明好名字确实是品牌要素中最重要的部分,后期的全案策划给品牌发展提供更大的支持。尤其在整合创 意及设计方面,让品牌形成了系统的竞争力。
-
远洋集团品牌总监金悦在先知中国合作过程中,团队的专业能力及服务态度都非常值得肯定,名称及设计的后期应用效果也非常有竞争力,为远洋养老项目及 LAVIE的售前、售中和售后都提供了强有力的支持。