首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

西蒙尼,匈牙利命名法由来

该命名规范,要求前缀字母用变量类型的缩写,其余部分用变量的英文或英文的缩写,单词第一个字母大写。

Ex

int iMyAge;        #  "i": int

char cMyName[10];  #  "c": char

float fManHeight;  #  "f": float

其他

前缀类型还有:

a      数组(Array)

b      布尔值(Boolean)

by     字节(Byte)

c      有符号字符(Char)

cb     无符号字符(Char Byte,并没有神马人用的)

cr     颜色参考值(Color Ref)

cx,cy  坐标差(长度 Short Int)

dw     双字(Double Word)

fn     函数(Function)

h      Handle(句柄)

i      整形(Int)

l      长整型(Long Int)

lp     长指针(Long Pointer)

m_     类成员(Class Member)

n      短整型(Short Int)

np     近程指针(Near Pointer)

p      指针(Pointer)

s      字符串(String)

sz     以 Null 做结尾的字符串型(String with Zero End)

w      字(Word)

创始人,西蒙尼

只要看了代码,你就能知道它是不是我的团队写的,或者是不是受我的影响写的。

这是因为我从1972年起写的代码都遵循特定的命名规范,许多人称之为“匈牙利命名法”。

你一眼就能分辨出哪些代码是受我的影响写出来的,包括Microsoft Word、Multiplan和Bravo,以及其他许多遵循这些规范写成的程序。

这里的“匈牙利”是句反话,因为这些命名规范其实是要让代码更易读。

这个玩笑说的是程序看起来这么难读,说不定真是用匈牙利语写的。其实这套规范能够很好地控制程序中所有变量的命名。

要是分解一个程序,把它放进磨床,然后对碎片进行分类,你就会发现程序的大部分都是名字。写下“apples + oranges”,你会发现名字“apples”有6个字符,运算符“+”只有1个字符,名字“oranges”有7个字符,一共14个字符,只有一个字符即加号与运算有关。

因此,对我来说,要起到作用或有所改进,合乎逻辑的做法就是尽力完善程序的主要部分,也就是名字。

“匈牙利命名法”是一种根据变量的属性自动为其创建名字的命名方法。这跟人们把当裁缝(tailor)的叫做泰勒(Taylor)以及把当铁匠(blacksmith)的叫做史密斯(Smith)非常相似。

因此,面对一个具备某些属性的结构,不要随随便便地取个名字,然后让所有人去琢磨名字和属性之间有什么关联,你应该把属性本身用作结构的名字。

这种方法有很多优点。首先,造个名字很容易,想到那些属性时,把它们写下来,名字自然就有了。

第二,它很容易理解,因为当你读到某个变量时,从名字本身就能了解到与属性有关的大量信息。这些属性会越来越多,因此很难简明地描述它们。

为此“匈牙利命名法”引入了一种缩写符号,以很小的空间就能展现具体属性。当然,这在不知情的人看来完全是一团乱麻,那个玩笑就是这么来的。 有些人认为,如果他们可以读出代码里的每个字,那么程序就是可读的。

实际上,这种意义上的可读性并不可取。没有人会拿着代码清单,站到演讲台上大声朗读程序。关键在于理解。只是能阅读单词并发出音来,这毫无用处。

当人们看到采用“匈牙利命名法”的代码清单时,他们发现这些词很难念,可能就会认为代码不是可读的。但实际上,由于名字和属性之间存在关联,它更容易理解,也更便于沟通。

现在使用匈牙利命名法编程的人,越来越多。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OjLrJ6M0-KClGqq2a3iKSn0Q0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券