匈牙利命名法的演变与现代应用

匈牙利命名法是一种在计算机编程中使用的标识符命名约定,它通过在变量或函数名称中包含其意图、类型或其他元信息来增强代码的可读性。尽管许多人对匈牙利命名法的理解相对狭隘,认为它只是简单的类型前缀,但实际上,匈牙利命名法远不止于此,并且在未来一段时间内仍将继续存在。

匈牙利命名法的起源

匈牙利命名法可以追溯到计算机的早期时代,其正式定义自20世纪80年代就已经存在。它最初流行于那些没有语法类型定义的语言中,当时使用的是简单的编辑器,而不是功能丰富的集成开发环境(IDE)。在像C这样的语言中,可以通过声明来明确变量的类型,例如:

int x = 0; string y = "Hello";

而像Basic这样的语言则不允许显式类型定义,而是使用关键字如"let"和"var"来进行声明:

let x = 0 var y = "Hello"

根据语言的不同,将x赋值为y可能会产生错误,或者成功,但结果可能是x变成了'H'或者72(H的ASCII码)。

早期发展

开发者们通过在字符串变量后缀添加'$'来实现最早的“类型安全”形式。这在只有两种数据类型(数字和字符串)的年代是有帮助的,而解释器和编译器无法强制执行这一点。

let x = 0 // x是一个数字 let y$ = "Hello" // y是一个字符串

为了一致性,某些地区也使用后缀%来表示数字。随着语言的成熟和更多数据类型的出现,需要另一种方法。最早的匈牙利命名法形式建立在后缀方法上。这不是一个风格选择,许多人更喜欢类型优先的方法,但由于BASIC语言的技术限制,这是不可能的。BASIC语言正在成为当时最受欢迎的通用计算语言。

形式化

许多年后,变量名的大小限制已经消失。清晰的命名只是良好编程实践的一部分。元命名方法已经转向更像C那样的前缀和基于类型的命名方法——strName就是上面例子中的普通形式。意图驱动的命名并没有被放弃,但已经失去了优势。随着面向对象编程的出现,它在某种程度上又回来了。在笛卡尔系统中,可能会发现一个点的x和y坐标被命名为fltXPoint和fltYPoint。或者为了表示返回整数的函数名称,可能会看到intSumFn。

在20世纪80年代晚期,大部分关于形式化这些约定的工作已经完成。在这方面最著名的名字是Charles Petzold、Doug Klunder和Charles Simonyi。其中,Simonyi的影响力最大,如果不是因为他的匈牙利血统,那么匈牙利命名法的名字就来源于他。Simonyi的影响力远远超出了对名字的贡献。Simonyi是MS Word和Office的父亲,他标准化了匈牙利命名法在该组中的使用,最终在整个微软中传播。匈牙利命名法的标准形式被定义为包含三个部分——标签、基础名称和限定符。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485