课外阅读资料之二--变量的匈牙利命名法

课外阅读 1:匈牙利命名法

黄永峰,2011­10­10

匈牙利命名法是一种编程时的命名规范。基本原则是:变量名=属性+类型 +对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名 字的一部分。命名要基于容易记忆容易理解的原则。保证名字的连贯性是非常重 要的。举例来说,表单的名称为form,那么在匈牙利命名法中可以简写为frm, 则当表单变量名称为 Switchboard 时,变量全称应该为 frmSwitchboard。这样 可以很容易从变量名看出Switchboard是一个表单,同样,如果此变量类型为标 签,那么就应命名成lblSwitchboard。可以看出,匈牙利命名法非常便于记忆, 而且使变量名非常清晰易懂,这样,增强了代码的可读性,方便各程序员之间相 互交流代码。

这种命名技术是由一位能干的 Microsoft 程序员查尔斯·西蒙尼(Charles Simonyi) 提出的,他出生在匈牙利。在 Microsoft 公司中和他一起工作的人被 教会使用这种约定。这对他们来说一切都很正常。但对那些 Simonyi 领导的项 目组之外的人来说却感到很奇特,他们认为这是死板的表达方式,甚至说带有这 样奇怪的外观是因为它是用匈牙利文写的。 从此这种命名方式就被叫做匈牙利命 名法。

据说这种命名法是一位叫 Charles Simonyi 的匈牙利程序员发明的,后来 他在微软呆了几年, 于是这种命名法就通过微软的各种产品和文档资料向世界传 播开了。现在,大部分程序员不管自己使用什么软件进行开发,或多或少都使用 了这种命名法。这种命名法的出发点是把量名变按:属性+类型 +对象 描述的顺 序组合起来,以使程序员作变量时对变量的类型和其它属性有直观的了解,下面 是HN变量命名规范,其中也有一些是我个人的偏向:

1)属性部分

全局变量 g_

常量 c_

c++类成员变量 m_

静态变量 s_

类型部分

指针 p

函数 fn

无效 v

句柄 h

长整型 l

布尔 b

浮点型(有时也指文件) f

双字 dw

字符串 sz

短整型 n

双精度浮点 d

计数 c(通常用cnt)

字符 ch(通常用c)

整型 i(通常用n)

字节 by

字 w

实型 r

无符号 u

3)描述部分

最大 Max

最小 Min

初始化 Init

临时变量

T(或Temp)

源对象 Src

目的对象Dest

这里顺便写几个例子:

hwnd: h是类型描述, 表示句柄, wnd 是变量对象描述, 表示窗口, 所以 hwnd 表示窗口句柄;

pfnEatApple :pfn 是类型描述,表示指向函数的指针, EatApple 是变量 对象描述,所以它表示指向EatApple 函数的函数指针变量。

g_cch :g_是属性描述,表示全局变量,c 和 ch 分别是计数类型和字符类 型,一起表示变量类型,这里忽略了对象描述,所以它表示一个对字符进行计数 的全局变量。

上面就是HN命名法的一般规则。

课外阅读 1:匈牙利命名法

黄永峰,2011­10­10

匈牙利命名法是一种编程时的命名规范。基本原则是:变量名=属性+类型 +对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名 字的一部分。命名要基于容易记忆容易理解的原则。保证名字的连贯性是非常重 要的。举例来说,表单的名称为form,那么在匈牙利命名法中可以简写为frm, 则当表单变量名称为 Switchboard 时,变量全称应该为 frmSwitchboard。这样 可以很容易从变量名看出Switchboard是一个表单,同样,如果此变量类型为标 签,那么就应命名成lblSwitchboard。可以看出,匈牙利命名法非常便于记忆, 而且使变量名非常清晰易懂,这样,增强了代码的可读性,方便各程序员之间相 互交流代码。

这种命名技术是由一位能干的 Microsoft 程序员查尔斯·西蒙尼(Charles Simonyi) 提出的,他出生在匈牙利。在 Microsoft 公司中和他一起工作的人被 教会使用这种约定。这对他们来说一切都很正常。但对那些 Simonyi 领导的项 目组之外的人来说却感到很奇特,他们认为这是死板的表达方式,甚至说带有这 样奇怪的外观是因为它是用匈牙利文写的。 从此这种命名方式就被叫做匈牙利命 名法。

据说这种命名法是一位叫 Charles Simonyi 的匈牙利程序员发明的,后来 他在微软呆了几年, 于是这种命名法就通过微软的各种产品和文档资料向世界传 播开了。现在,大部分程序员不管自己使用什么软件进行开发,或多或少都使用 了这种命名法。这种命名法的出发点是把量名变按:属性+类型 +对象 描述的顺 序组合起来,以使程序员作变量时对变量的类型和其它属性有直观的了解,下面 是HN变量命名规范,其中也有一些是我个人的偏向:

1)属性部分

全局变量 g_

常量 c_

c++类成员变量 m_

静态变量 s_

类型部分

指针 p

函数 fn

无效 v

句柄 h

长整型 l

布尔 b

浮点型(有时也指文件) f

双字 dw

字符串 sz

短整型 n

双精度浮点 d

计数 c(通常用cnt)

字符 ch(通常用c)

整型 i(通常用n)

字节 by

字 w

实型 r

无符号 u

3)描述部分

最大 Max

最小 Min

初始化 Init

临时变量

T(或Temp)

源对象 Src

目的对象Dest

这里顺便写几个例子:

hwnd: h是类型描述, 表示句柄, wnd 是变量对象描述, 表示窗口, 所以 hwnd 表示窗口句柄;

pfnEatApple :pfn 是类型描述,表示指向函数的指针, EatApple 是变量 对象描述,所以它表示指向EatApple 函数的函数指针变量。

g_cch :g_是属性描述,表示全局变量,c 和 ch 分别是计数类型和字符类 型,一起表示变量类型,这里忽略了对象描述,所以它表示一个对字符进行计数 的全局变量。

上面就是HN命名法的一般规则。


相关文章

  • 变量命名规则
  • 变量名首字母必须为字母(a-z A-Z),下划线(_),或者美元符号($)开始,php 编程中所有变量必须以$开始.(有些编译器已经支持中文变量名了) 变量名只能是字母(a-z A-Z),数字(0-9),下划线(_)的组合,并且之间不能包含 ...查看


  • 匈牙利命名法
  • 匈牙利命名规则: 基本原则是:变量名=属性+类型+对象描述 (1)文件名的匈牙利命名法: 文件的名称也应该遵循匈牙利命名法,其以"F"+名字(名字首字母大写)的形式出现. 比如: FFun.cpp(工程名) FName. ...查看


  • 令人忧虑_不阅读的中国人1
  • 令人忧虑,不阅读的中国人 我在从飞往上海的飞机上.正是长途飞行中的睡眠时间,机舱已熄灯,我吃惊地发现,不睡觉玩iPad的,基本上都是中国人,而且他们基本上都是在打游戏或看电影,没见有人读书. 这一幕情景一直停留在我的脑海里.其实在法兰克福机 ...查看


  • 不读书的中国人
  • 令人忧虑,不阅读的中国人(转发一位印度人的文章) (2013-08-03 16:30:20) 转载▼ 标签: 不读书的中国人 分类: 散文 杂谈 > 近日,一名印度工程师所写<令人忧虑,不阅读的中国人>红遍网络.他说,或许 ...查看


  • 论教育公平发展的三个基本问题
  • No.10,2010 UCATIONALRESEAR General,No. 369 论教育公平发展的三个基本问题* 薛二勇 [摘 要]教育公平发展面临三个基本问题,即教育成就与教育公平的关系,教育资 源与教育公平的关系,学生背景与教育公平 ...查看


  • 一名印度工程师所写
  • 一名印度工程师所写<令人忧虑,不阅读的中国人>红遍网络. 他说,或许不应过分苛责.但我只是忧虑,如果就此疏远了灵魂,未来的中国可能会为此付出代价. 文如下:我在从飞往上海的飞机上.正是长途飞行中的睡眠时间,机舱已熄灯,我吃惊地发 ...查看


  • 令人忧虑,不阅读的中国人
  • 令人忧虑,不阅读的中国人 近日,一名印度工程师所写<令人忧虑,不阅读的中国人>红遍网络.读后令人惊悚.全文如下: 我在从飞往上海的飞机上.正是长途飞行中的睡眠时间,机舱已熄灯,我吃惊地发现,不睡觉玩iPad的,基本上都是中国人, ...查看


  • 渴望所有中国人都能看到这篇文章
  • 渴望所有中国人都能看到这篇文章 古人寒窗苦读,十年如一日,才有了今天中华五千年博大精深的文化,而现代人确忽略的智慧的来源.近日,一名印度工程师所写<令人忧虑,不阅读的中国人>红遍网络.他说,或许不应过分苛责.但我只是忧虑,如果就 ...查看


  • 北师大版生物七年级目录及教案
  • 书籍目录: 第1单元 认识生命 第1章 生命的世界 第1节 形形色色的生物 第2节 生物与环境的相互影响 第2章 探索生命 第1节 生物学是探索生命的科学 第2节 生物学研究的基本方法 第1单元 检测 第2单元 生物体的结构 第3章 细胞 ...查看


热门内容