匈牙利命名规则
C++之匈牙利命名法
hBrush;
CBrush*
pBrush;
HFONT
hFont;
CFont*
pFont;
HBITMAP
hBitmap;
CBitmap*
pBitmap;
HPALETTE
hPaltte;
CPalette*
pPalette;
HRGN
hRgn;
CRgn*
pRgn;
HMENU
hMenu;
CMenu*
pScrollBar;
HSZ
hszStr;
CString
pStr;
POINT
pt;
CPoint
pt;
SIZE
size;
CSize
size;
RECT
rect;
CRect
rect;
一般前缀命名规范
前缀
类型
实例
C
类或结构
CDocument,CPrintInfo
S
结构体
SAddress
m_
成员变量
m_pDoc,m_nCustomers
32位字符串指针
lpszName
lpsz
LPCSTR
32位常量字符串指针
lpszName
lpsz
LPCTSTR
如果_UNICODE定义,则为32位常量字符串指针
lpszName
h
handle
Windows对象句柄
hWnd
lpfn
callback
指向CALLBACK函数的远指针
?
if
输入文件流
ifDataFile
nHeight
w
WORD
匈牙利变量命名规则
匈牙利变量命名规则
在匈牙利命名约定中,变量通常使用以下规则命名:
1. 前缀:变量名的前缀表示变量的数据类型或含义。
常用的前缀包括:
- b:布尔型
- c:字符型
- i:整型
- f:浮点型
- d:双精度浮点型
- sz:以null结尾的字符串
- p:指针
- arr:数组
2. 后缀:变量名的后缀通常表示其用途或范围。
例如:
- Count:表示数量
- Index:表示索引
- Max:表示最大值
- Min:表示最小值
3. 首字母大写:每个单词的首字母都应大写,采用驼峰命名法(CamelCase)。
4. 有意义的名称:变量名应具有描述性,能够清晰地表达其含义和用途。
下面是一些示例:
- int iCount:表示整数类型的计数器
- bool bIsFinished:表示布尔类型的标志,用于表示是否完成- char cFirstLetter:表示字符类型的变量,存储第一个字母
- float fAverage:表示浮点数类型的平均值
- int arrNumbers[10]:表示整型数组,存储10个数字
需要注意的是,这只是匈牙利命名约定的一种常见形式,实际上还有其他的命名约定可以使用。
在编写代码时,应根据自己的团队规范或项目要求进行相应的命名。
匈牙利变量命名规则
匈牙利变量命名规则
摘要:
1.匈牙利命名法的起源和特点
2.匈牙利命名法的基本规则
3.匈牙利命名法的应用领域
4.匈牙利命名法的优缺点
正文:
1.匈牙利命名法的起源和特点
匈牙利命名法(Hungarian Notation)是一种用于变量命名的规范,起源于20 世纪50 年代的匈牙利计算机科学家。
这种命名法的主要特点是:使用小写字母和短横线来表示变量的类型和作用域,使得程序员在看到变量名就能大致了解变量的含义和用途。
2.匈牙利命名法的基本规则
匈牙利命名法包括以下基本规则:
- 变量名以小写字母开头,如果需要表示数字,则使用0-9 表示;
- 变量名中可以包含一个或多个短横线(-),用于表示变量的类型或作用域;
- 变量名中不能包含空格,且除开头字母外,其他字母都应小写。
3.匈牙利命名法的应用领域
匈牙利命名法广泛应用于计算机编程领域,尤其在微软的Visual Studio 编程工具中使用较为广泛。
此外,许多其他编程语言和代码编辑器也支持或推
荐使用匈牙利命名法。
4.匈牙利命名法的优缺点
匈牙利命名法的优点包括:
- 有助于提高代码的可读性,使程序员更容易理解变量的含义和用途;
- 有助于减少编译器或解释器的错误,因为变量名中包含了类型信息;
- 可以提高编程效率,因为可以使用简短的变量名。
然而,匈牙利命名法也存在一些缺点,例如:
- 变量名较长,可能导致输入困难或容易出错;
- 可能使代码看起来过于复杂,增加新程序员的学习成本。
总之,匈牙利命名法是一种有助于提高代码可读性和可维护性的编程规范。
匈牙利命名法
匈牙利命名法1 匈牙利命名法匈牙利命名法是一种编程时的命名规范。
基本原则是:变量名=属性+类型+对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。
命名要基于容易记忆容易理解的原则。
保证名字的连贯性是非常重要的。
举例来说,表单的名称为form,那么在匈牙利命名法中可以简写为frm,则当表单变量名称为Switchboard 时,变量全称应该为frmSwitchboard。
这样可以很容易从变量名看出Switchboard 是一个表单;同样,如果此变量类型为标签,那么就应命名成lblSwitchboard。
可以看出,匈牙利命名法非常便于记忆,而且使变量名非常清晰易懂,这样增强了代码的可读性,方便各程序员之间相互交流代码。
这种命名技术是由一位能干的Microsoft 程序员查尔斯·西蒙尼(Charles Simonyi) 提出的,他出生在匈牙利。
在Microsoft 公司中和他一起工作的人被教会使用这种约定。
这对他们来说一切都很正常。
但对那些Simonyi 领导的项目组之外的人来说却感到很奇特,他们认为这是死板的表达方式,甚至说带有这样奇怪的外观是因为它是用匈牙利文写的。
从此这种命名方式就被叫做匈牙利命名法。
现在,大部分程序员不管自己使用什么软件进行开发,或多或少都使用了这种命名法。
2 一般规则属性部分全局变量g_常量c_c++类成员变量m_静态变量s_类型部分指针p函数fn无效v句柄h长整型l布尔b浮点型f双字dw字符串s短整型n双精度浮点d计数c(通常用cnt)字符ch(通常用c)整型i(通常用n)字节by字w实型r无符号u描述部分最大Max最小Min初始化Init临时变量T(或Temp)源对象Src目的对象Dest例如:pfnEatApple :pfn 是类型描述,表示指向函数的指针,EatApple 是变量对象描述,所以它表示指向EatApple 函数的函数指针变量。
匈牙利命名法则
匈牙利命名法规则大全一般情况下,变量的取名方式为:<scope_> + <prefix_> + vqualifier>范围前缀_,类型前缀_,限定词特殊的类型命名,前缀表示:注:类名前缀改为Lm,对于非全局的类最好有语义表示其所属模块。
类的实例命名与类名大致相同,只是类名语义表示类的通用含义,而类名表示此实例的具体语义。
如类名LmSketPoi nt 表示草图点的类定义,而它的两个实例_StartPoi nt,_E ndPoi nt 分别代表起点和终点的语义。
类的实例命名带上前缀。
特殊约定:a. MouseTool的派生类的前缀为_Mt.b .对话框类的前缀为CDlg.c.橡皮条类的前缀为_Rb.注:编程时尽量少用全局变量,对于全局变量还应在类型前缀后加上如下关特征模块:Fea草图模块:Sket装配模块:Asm工程图模块:Lay曲面模块:Surf界面模块:Ui常用的一般数据类型的前缀INT 32-bit sig ned in teger.INT_PTR Sig ned in tegral type for pointerprecisi on. Use whe n casti ng a poin ter toan in teger to perform poin ter arithmetic.precisi on. Use whe n casti ng a poin ter toa long to perform poin ter arithmetic.null-terminated string of 8-bit Win dows(ANSI) characters. For more in formati on,see Characterof 16-bit Uni code characters. For more in formati on, see Characternull-terminated string of 8-bit Win dows (ANSI) characters. Fornull-terminated string of 16-bit Uni code characters. For more in formati on, see Character Sets Used By Fon ts.。
变量命名方法匈牙利命名法
变量命名方法匈牙利命名法匈牙利命名法,听起来是不是有点高深莫测?一听就觉得可能是个很严肃的技术名词,像是某个什么专利的名称,甚至会让人觉得必须得是个计算机天才才能搞懂。
不过,别急,咱们今天就给你把它“拆”开了,简单讲一讲。
它就是一种变量命名的方式,目的就是让我们在写代码的时候,能一眼看出某个变量的类型是什么。
听起来有点抽象是不是?别着急,我来慢慢给你解释。
咱们先从名字说起。
匈牙利命名法的名字有点“来头”,但其实它的由来很简单,就是一个叫做匈牙利的地方,和一种编程习惯的结合。
我们编程的时候,很多时候要用到各种变量,像数字、字符串,甚至是一些比较复杂的对象。
在没有好的命名规则之前,程序员们往往会遇到一个问题——明明是自己写的代码,过了一段时间自己都不太记得这些变量到底是什么了,甚至得重新去查找。
这可麻烦了,搞不好哪天就踩坑了。
于是,匈牙利命名法就应运而生,它的核心理念就是,给每个变量加上一些前缀,这些前缀能让你一眼看出这个变量是什么类型。
比如说,str 就表示它是一个字符串(string),int 表示它是一个整数,flt 就是浮点数(float)。
这样,哪怕你看代码时没看到完整的定义,只看变量名就能知道它是什么类型,不至于让人抓狂。
简单吧?听起来挺明白对吧?就比如说,假设你有一个变量叫做 strName,那你就能立刻知道它是一个字符串类型的变量,而且是用来存储“名字”这类东西的。
要是有个变量叫做 intAge,那你也能直接判断它是个整数类型的,存的是年龄。
而且这个命名法不仅仅是给你省时间,还是给别人看你代码提供了帮助。
就想象一下,如果你在团队里工作,你写的代码别人也要看。
假如你写的变量名字一个个都跟“黑盒”似的,没人知道它是啥类型,不就给别人添麻烦了吗?人家都得猜,这不是“吃力不讨好”嘛。
但是,匈牙利命名法也不是完美的哦,它有它的局限性。
首先嘛,随着编程语言的不断发展,很多语言本身就会帮助我们推断变量类型了。
匈牙利变量命名规则
匈牙利变量命名规则摘要:1.匈牙利命名法简介2.匈牙利命名法的基本规则3.匈牙利命名法的应用实例4.匈牙利命名法的优缺点正文:1.匈牙利命名法简介匈牙利命名法是一种广泛应用于计算机编程领域的变量命名规范,最早由匈牙利数学家艾兹赫尔·卡罗利(Ern Kálmán)提出,后来由IBM 的阿尔伯特·斯奇尔(Albert S.Householder)和克劳德·贝克(Claude C.Baker)进一步完善。
匈牙利命名法的主要特点是使用缩写来表示变量的含义,从而提高程序的可读性。
2.匈牙利命名法的基本规则匈牙利命名法包括以下基本规则:- 变量名以小写字母开头,即使该变量表示一个常量。
- 变量名中每个单词的首字母大写,除第一个单词外。
- 使用缩写来表示变量的含义。
常见的缩写有:a 表示“after”,b 表示“before”,i 表示“increment”,d 表示“decrement”,e 表示“even”,o 表示“odd”,s 表示“sum”,p 表示“product”,m 表示“minimum”,M 表示“maximum”,等等。
3.匈牙利命名法的应用实例以下是一些匈牙利命名法的应用实例:- a1 表示“a 之后的第一个数”- b2 表示“b 之前的第二个数”- i1 表示“第i 个数”- d2 表示“第d 个数的相反数”- e1 表示“第e 个偶数”- o3 表示“第o 个奇数”- s1 表示“前s 个数的和”- p1 表示“前p 个数的乘积”- m1 表示“第m 个数的最小值”- M1 表示“第M 个数的最大值”4.匈牙利命名法的优缺点匈牙利命名法的优点在于它简洁明了,能够快速地传达变量的含义。
尤其在代码中,匈牙利命名法能够提高程序的可读性,使程序员更容易理解代码的功能。
然而,匈牙利命名法也有一些缺点。
首先,由于它使用了大量的缩写,可能导致非母语人士难以理解。
匈牙利人姓在前名与后,与欧洲都不一样,是匈奴后代吗?
匈⽛利⼈姓在前名与后,与欧洲都不⼀样,是匈奴后代吗?
匈⽛利起初是匈帝国,建⽴者是匈⼈。
学术界有⼀种说法,匈⼈就是李牧、蒙恬、霍去病北伐
的主要对⼿匈奴,在东汉时期⼀部分匈奴⼈迁居到现在的匈⽛利。
后来的匈帝国,与⽇⽿曼⼈,斯拉夫⼈不断进⾏战争,肯定也融合了这两个民族的⾎统。
匈⽛利还曾被奥斯曼⼟⽿其帝国占领过,后来⼜与奥地利等组成奥匈帝国,侵略清朝的⼋国联
军中就有这个奥匈帝国。
匈⽛利这个民族⾎统必然是很杂的,与欧洲⼈的姓名不⼀样,姓在前,名在后。
姓名的规则,
倒是和中国、⽇本、韩国、越南⼀样,这也让⼈怀疑是遵从匈奴的习俗。
如果⽤DNA去分析,匈⽛利⼈与奥地利⼈、斯洛伐克⼈是最接近的,也就是说,即便最初的匈
⽛利⼈有匈奴⾎统,经过近两千年洗礼,也多半是欧洲⾎统了。
匈⽛利⾯积约9.3万平⽅公⾥,⼈⼝约 980万,图为⾸都布达佩斯夜景。
匈牙利命名规则和共性规则
匈牙利命名法是一种编程时的命名规范。
基本原则是:变量名=属性+类型+对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。
命名要基于容易记忆容易理解的原则。
保证名字的连贯性是非常重要的。
举例来说,表单的名称为form,那么在匈牙利命名法中可以简写为frm,则当表单变量名称为Switchboard时,变量全称应该为frmSwitchboard。
这样可以很容易从变量名看出Switchboard 是一个表单,同样,如果此变量类型为标签,那么就应命名成lblSwitchboard。
可以看出,匈牙利命名法非常便于记忆,而且使变量名非常清晰易懂,这样,增强了代码的可读性,方便各程序员之间相互交流代码。
这种命名技术是由一位能干的Microsoft程序员查尔斯·西蒙尼(Charles Simonyi) 提出的,他出生在匈牙利。
在Microsoft 公司中和他一起工作的人被教会使用这种约定。
这对他们来说一切都很正常。
但对那些Simonyi 领导的项目组之外的人来说却感到很奇特,他们认为这是死板的表达方式,甚至说带有这样奇怪的外观是因为它是用匈牙利文写的。
从此这种命名方式就被叫做匈牙利命名法。
据说这种命名法是一位叫Charles Simonyi 的匈牙利程序员发明的,后来他在微软呆了几年,于是这种命名法就通过微软的各种产品和文档资料向世界传播开了。
现在,大部分程序员不管自己使用什么软件进行开发,或多或少都使用了这种命名法。
这种命名法的出发点是把量名变按:属性+类型+对象描述的顺序组合起来,以使程序员作变量时对变量的类型和其它属性有直观的了解,下面是HN变量命名规范,其中也有一些是我个人的偏向:属性部分全局变量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描述部分最大Max最小Min初始化Init临时变量T(或Temp)源对象Src目的对象Dest这里顺便写几个例子:hwnd :h 是类型描述,表示句柄,wnd 是变量对象描述,表示窗口,所以hwnd 表示窗口句柄;pfnEatApple :pfn 是类型描述,表示指向函数的指针,EatApple 是变量对象描述,所以它表示指向EatApple 函数的函数指针变量。
匈牙利,骆驼,帕斯卡命名法规范
匈牙利命名法,骆驼命名法,帕斯卡命名法,C#命名规范一、匈牙利(Hungarian)命名法:广泛应用于象Microsoft Windows这样的环境中。
Windows 编程中用到的变量(还包括宏)的命名规则匈牙利命名法,这种命名技术是由一位能干的 Microsoft 程序员查尔斯·西蒙尼(Charles Simonyi) 提出的。
匈牙利命名法通过在变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域,类型等。
这些符号可以多个同时使用,顺序是先m_(成员变量),再指针,再简单数据类型,再其他。
例如:m_lpszStr, 表示指向一个以0字符结尾的字符串的长指针成员变量。
匈牙利命名法关键是:标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合,该单词要指明变量的用途。
在windowsForm 应用程序中,控件命名采用匈牙利命名法。
如TextBox类型,前缀加txt,例如命名为txtCustomerName,txtAddress。
Button类型, 前缀加btn,例如btnSave,btnDelete。
匈牙利命名法中常用的小写字母的前缀:前缀类型a 数组 (Array)b 布尔值 (Boolean)by 字节 (Byte)c 有符号字符 (Char)cb 无符号字符 (Char Byte,没有多少人用)cr 颜色参考值 (ColorRef)cx,cy 坐标差(长度 ShortInt)dw Double Wordfn 函数h Handle(句柄)i 整型l 长整型 (Long Int)lp Long Pointerm_ 类的成员n 短整型 (Short Int)np Near Pointerp Pointer(指针)s 字符串型 (string)sz 以null做结尾的字符串型 (String with Zero End)w Word二、骆驼(camel)命名法:骆驼式命令法,正如它的名称所表示的那样,是指混合使用大小写字母来构成变量和函数的名字。
程序编程匈牙利命名法
程序编程匈牙利命名法在编程中,命名是非常重要的,良好的命名可以增加代码的可读性和可维护性。
而匈牙利命名法是一种广泛用于程序编程的命名规范,它以变量的类型作为前缀,用以区分不同类型的变量。
本文将介绍匈牙利命名法的定义、优缺点以及在实际应用中的使用。
一、匈牙利命名法的定义匈牙利命名法是由微软公司的Charles Simonyi在20世纪80年代提出的。
它的基本原则是将变量的类型作为前缀,以便于区分不同类型的变量。
匈牙利命名法的命名规则如下:1. 前缀:根据变量的类型添加相应的前缀,例如整型变量使用"i"作为前缀,字符串变量使用"s"作为前缀。
2. 首字母大写:除了前缀之外,变量名的首字母要大写,以提高可读性。
3. 驼峰命名法:变量名中的每个单词的首字母都大写,其余字母小写。
二、匈牙利命名法的优点1. 提高可读性:通过添加前缀和使用驼峰命名法,可以清晰地表示变量的类型和含义,增加代码的可读性。
2. 避免命名冲突:使用不同的前缀可以避免变量之间的命名冲突,减少错误的发生。
3. 方便代码维护:使用匈牙利命名法可以使代码更易于理解和修改,减少程序维护的难度。
三、匈牙利命名法的缺点1. 命名冗长:由于需要添加前缀和使用驼峰命名法,变量名可能会变得冗长,增加代码的长度。
这对于阅读和编写代码来说可能会带来一定的困扰。
2. 易混淆:如果不遵循匈牙利命名法的规则,或者前缀选择不当,可能会导致变量名之间的混淆,降低代码的可读性。
四、匈牙利命名法的实际应用在实际应用中,我们可以根据具体的编程语言和项目要求来选择是否使用匈牙利命名法。
以下是一些匈牙利命名法在不同场景下的应用示例:1. C语言中的匈牙利命名法:- 整型变量:int iCount;- 字符串变量:char szName[100];- 布尔型变量:bool bFlag;2. Java语言中的匈牙利命名法:- 整型变量:int iCount;- 字符串变量:String strName;- 布尔型变量:boolean bFlag;3. Python语言中的匈牙利命名法:- 整型变量:iCount = 0- 字符串变量:strName = "Hello"- 布尔型变量:bFlag = True通过以上示例可以看出,在不同编程语言中,匈牙利命名法的具体应用会有所差异,但其基本原则仍然是以变量类型作为前缀,提高代码的可读性和可维护性。
最新C++之匈牙利命名法
C++之匈牙利命名法
在编程时,变量、函数的命名是一个极其重要的问题。
好的命名方法使变量易于记忆且程序可读性大大提高。
Microsoft采用匈牙利命名法来命名Windows API函数和变量。
匈牙利命名法是由Microsoft的著名开发人员、Excel的主要设计者查尔斯·西蒙尼在他的博士论文中提出来
我们先看一下我们低海拔的平原到底有多少。
图中国真正的平原地区
我们会发现中国几千年扩张的这么大的地盘,其实平原相比少的可怜,在没有获得四川盆地和东北平原的时代,我们所熟知的夏商西周春秋战国,其实主要的活动区域仅仅是上面的黄色区域(华北平原)和红色区域(渭河谷地)以及长江边缘的小型平原。
其实大家也发现了,上图中往往有河流的地方,才有所谓平原。
其实绝大部分的平原,都是一种叫做“冲积平原”的东西,也就是说河流携带大量泥沙,然后沉积在地表,形成平坦肥沃的土地。
所以我们可以看到,我们最大最古老的华北平原,其实就是黄河冲积形成的肥沃土地。
华北平原。
匈牙利命名法及实用规则.
一、匈牙利命名法:Windows 编程中用到的变量(还包括宏的命名规则匈牙利命名法,这种命名技术是由一位能干的 Microsoft 程序员查尔斯·西蒙尼 (Charles Simonyi 提出的。
基本原则是:变量名=属性+类型+对象描述⑴属性部分:全局变量:g_常量 :c_类成员变量:m_⑵类型部分:数组:a布尔型:b byte: bychar: c 字节计数 : cb 颜色引用值 : cr 坐标差(长度 : cx,cy双字 (DWORD: dw浮点型:f 函数 : fn句柄:h整数 (integer: i长整型 (long: l long 型指针 : lp短整型:n near 指针 : np指针:pstring: s 用 '\0'终止的字符串 : sz文本内容 : tm无符号:uWord: w坐标 : x,y⑶描述部分:初始化:Init临时变量:Tmp目的对象:Dst源对象:Src窗口:Wnd下边举例说明:hwnd :h 表示句柄, wnd 表示窗口,合起来为“窗口句柄” 。
m_bFlag:m 表示成员变量, b 表示布尔,合起来为:“某个类的成员变量,布尔型,是一个状态标志” 。
1,变量命名;2,常量命名、宏定义;3,资源名字定义格式;4,函数命名和命名空间、类的命名、接口的命名;5,结构体命名;6,控件的命名;7,注释;本文来自 CSDN 博客,转载请标明出处:/stkim/archive/2004/09/29/120347.aspx 匈牙利命名法通过在变量名前面加上相应的小写字母的符号标识作为前缀, 标识出变量的作用域, 类型等。
这些符号可以多个同时使用, 顺序是先 m_(成员变量 , 再指针, 再简单数据类型, 再其他。
例如:m_lpszStr, 表示指向一个以 0字符结尾的字符串的长指针成员变量。
匈牙利命名法关键是:标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合,该单词要指明变量的用途。
匈牙利命名法
匈⽛利命名法匈⽛利命名法变量(还包含宏)的命名规则,⽐較系统和彻底的有 Windows 编程中⽤到的匈⽛利命名法。
匈⽛利命名法通过在变量名前⾯加上对应的⼩写字母的符号标识作为前缀,标识出变量的作⽤域,类型等。
这些符号能够多个同⼀时候使⽤,顺序是先m_(成员变量),再指针,再简单数据类型,再其它。
⽐如:m_lpszStr, 表⽰指向⼀个以0字符结尾的字符串的长指针成员变量。
有关匈⽛利命名法的⼀点有意思的说明是它的名字的由来。
这样的命名技术是由⼀位能⼲的 Microsoft 程序猿查尔斯·西蒙尼(Charles Simonyi) 提出的,他出⽣在匈⽛利。
在 Microsoft 公司中和他⼀起⼯作的⼈被教会使⽤这样的约定。
这对他们来说⼀切都⾮常正常。
但对那些 Simonyi领导的项⽬组之外的⼈来说却感到⾮常奇特,他们觉得这是死板的表达⽅式,甚⾄说代有这样奇怪的外观是由于它是⽤匈⽛利⽂写的。
从此这样的命名⽅式就被叫做匈⽛利命名法。
匈⽛利命名法关键是:标识符的名字以⼀个或者多个⼩写字母开头作为前缀;前缀之后的是⾸字母⼤写的⼀个单词或多个单词组合,该单词要指明变量的⽤途。
匈⽛利命名法中经常使⽤的⼩写字母的前缀前 缀类 型a数组 (Array)b布尔值 (Boolean)by字节 (Byte)c有符号字符 (Char)cb⽆符号字符 (Char Byte,没有多少⼈⽤)cr颜⾊參考值 (ColorRef)cx,cy坐标差(长度 ShortInt)dw Double Wordfn函数h Handlei整型l长整型 (Long Int)lp Long Pointerm_类的成员n短整型 (Short Int)np Near Pointerp Pointers字符串型sz以null做结尾的字符串型 (String with Zero End)w Word可是在不论什么情况下,都硬性规定使⽤匈⽛利命名法是迂腐的。
匈牙利变量命名规则
匈牙利变量命名规则1. 背景介绍匈牙利命名规则(Hungarian Notation)是一种变量命名约定,最早由Charles Simonyi在微软公司内部提出并广泛应用。
它的主要目的是增加代码的可读性和可维护性,通过在变量名中加入类型信息,使程序员更容易理解变量的用途和数据类型。
匈牙利命名规则在很多编程语言中都有应用,例如C、C++、C#等。
2. 命名规则匈牙利命名规则的核心思想是在变量名前面加上一个或多个小写字母前缀,用以表示变量的类型或其他属性。
下面是一些常见的匈牙利前缀及其含义:•b:布尔型(bool)•c:字符型(char)•dw:双字(double word)•f:浮点型(float)•i:整型(int)•l:长整型(long)•n:短整型(short)•p:指针(pointer)•s:字符串(string)•sz:以null结尾的字符串(null-terminated string)•ui:无符号整型(unsigned int)•ul:无符号长整型(unsigned long)•us:无符号短整型(unsigned short)除了类型前缀,还可以根据变量的用途和作用域添加其他前缀,以进一步提高代码的可读性。
例如:•g_:全局变量(global)•m_:成员变量(member)•s_:静态变量(static)•p_:指针变量(pointer)•n_:常量(constant)3. 示例以下是一些使用匈牙利命名规则的示例:int iCount; // 整型计数器char cFirst; // 第一个字符float fPrice; // 价格bool bEnabled; // 是否启用LPSTR pszName; // 字符串指针const int nMaxSize = 100; // 最大尺寸常量static int s_iCount; // 静态计数器通过这种命名规则,我们可以很容易地判断变量的类型和作用,提高代码的可维护性。
匈牙利命名法——优缺点
HWND hCtl; CScrollBar* pScrollBar;
HSZ hszStr; CString pStr;
POINT pt; CPoint pt;
SIZE size; CSize size;
RECT rect; CRect rect;
p * 指针 pDoc
lp FAR* 远指针 lpszName
lpsz LPSTR 32位字符串指针 lpszName
lpsz LPCSTR 32位常量字符串指针 lpszName
lpsz LPCTSTR 如果_UNICODE定义,则为32位常量字符串指针 lpszName
_DEBUG 包括诊断的调试版本
_MBCS 编译多字节字符集
_UNICODE 在一个应用程序中打开Unicode
AFXAPI MFC提供的函数
CALLBACK 通过指针回调的函数
库标识符命名法 标识符 值和含义
u ANSI(N)或Unicode(U)
d 调试或发行:D = 调试;忽略标识符为发行。
ID_ 来自菜单项或工具栏的命令 ID_xDFFF
HID_ 命令Help上下文 HID_TOOLS_SPELLING 0x18000~0x1DFFF
IDP_ 消息框提示 IDP_INVALID_PARTNO 8~0xDEEF
HIDP_ 消息框Help上下文 HIDP_INVALID_PARTNO 0x30008~0x3DEFF
匈牙利命名法
匈牙利命名法是一种编程时的命名规范。基本原则是:变量名=属性+类型+对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。命名要基于容易记忆容易理解的原则。保证名字的连贯性是非常重要的。
匈牙利命名规则
匈牙利命名规则匈牙利命名规则(Hungariannotation)是一种命名变量和函数的方法,最初由Microsoft公司的Charles Simonyi于1970年代发明。
该规则的名称来源于Simonyi的出生地匈牙利。
在匈牙利命名规则中,变量名的开头使用一个或多个小写字母来表示变量的类型,后面跟随着一个大写字母开头的单词或短语来表示变量的用途。
例如,一个整型变量可以被命名为iCount,一个字符串变量可以被命名为strName。
这种命名方法使得变量的类型和用途一目了然,提高了代码的可读性和可维护性。
匈牙利命名规则还包括一些规则和约定,例如:1.前缀表示变量类型变量名的前缀表示变量的类型。
例如,i表示整型,f表示浮点型,b表示布尔型,s表示字符串型,p表示指针等等。
2.后缀表示变量用途变量名的后缀表示变量的用途。
例如,Count表示计数器,Index 表示索引,Length表示长度,Name表示名称,Ptr表示指针等等。
3.单词首字母大写变量名的后缀单词的首字母大写,以便更容易识别变量的用途。
例如,Count表示计数器,而count则表示一个普通的变量名。
4.缩写为了避免变量名过长,可以使用缩写来表示变量的类型和用途。
例如,iCount可以缩写为ic,strName可以缩写为sn。
匈牙利命名规则的优点在于它可以使代码更加清晰易懂,尤其是在大型项目中。
它还可以帮助程序员快速识别变量的类型和用途,从而减少错误和调试时间。
然而,它也有一些缺点。
例如,变量名可能会变得过长和难以阅读,而且在多种语言中使用时可能会出现不一致性。
在现代编程语言中,匈牙利命名规则已经不再普遍使用,因为许多语言已经提供了更好的类型检查和自动化重构工具。
例如,Java和C#都具有强类型检查和自动生成代码的功能,因此不需要使用匈牙利命名规则来辅助类型检查。
总之,匈牙利命名规则是一种有用的命名约定,可以提高代码的可读性和可维护性。
然而,它并不适用于所有情况,因此需要根据具体情况进行决策。
匈牙利命名法 缩写
匈牙利命名法缩写以匈牙利命名法(Hungarian notation)简称为HN,是一种命名约定,用于标识变量和函数的数据类型或用途。
这种命名法在计算机编程领域得到广泛应用,起源于20世纪70年代的匈牙利程序员Charles Simonyi。
HN的基本原则是在变量名前加上一个表示变量数据类型的前缀,以提高代码的可读性和可维护性。
下面将介绍HN的几个常见约定和使用场景。
1. 字符串前缀(str_)在HN中,字符串变量通常以"str_"作为前缀。
例如,str_name表示存储姓名的字符串变量,str_email表示存储电子邮件地址的字符串变量。
这种命名方式可以方便程序员在阅读代码时快速识别变量的数据类型,避免错误使用。
2. 整数前缀(int_)HN中,整数变量通常以"int_"作为前缀。
例如,int_age表示存储年龄的整数变量,int_count表示存储计数的整数变量。
使用整数前缀可以帮助程序员清晰地了解变量的数据类型,并避免类型错误。
3. 布尔值前缀(bool_)HN中,布尔值变量通常以"bool_"作为前缀。
例如,bool_isValid 表示存储是否有效的布尔值变量,bool_hasPermission表示存储是否有权限的布尔值变量。
使用布尔值前缀可以明确变量的数据类型,提高代码的可读性。
4. 数组前缀(arr_)在HN中,数组变量通常以"arr_"作为前缀。
例如,arr_numbers表示存储数字的数组变量,arr_names表示存储姓名的数组变量。
通过使用数组前缀,可以更容易地识别变量是数组类型,避免引起歧义。
5. 对象前缀(obj_)HN中,对象变量通常以"obj_"作为前缀。
例如,obj_person表示存储个人信息的对象变量,obj_car表示存储汽车信息的对象变量。
使用对象前缀可以让程序员快速识别变量是对象类型,更好地理解代码的用途。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
作用域前缀标明一个变量的可见范围。作用 域可以有如下几种:
前缀
说明
无
局部变量
m_
类的成员变量(member)
sm_
类的静态成员变量
(static member)
s_
静态变量(static)
g_
外部全局变量(global)
sg_
静态全局变量(static
gloБайду номын сангаасal)
gg_
进程间共享的共享数据
段全局变量(global
如果_UNICODE 定义,则为 32 位
lpsz LPCTSTR
lpszName
常量字符串指针
h handle Windows 对象句柄
hWnd
lpfn callback 指向 CALLBACK 函数的远指针
?
if
输入文件流
ifDataFile
of
输出文件流
ofStuFile
sz
以"\0"结束的字符串
对未给出的变量类型要求提出并给出命名建议给技术委员会。
②、指针变量命名的基本原则为: 对一重指针变量的基本原则为: “p”+变量类型前缀+命名 如一个 float*型应该表示为 pfStat 对多重指针变量的基本规则为: 二重指针: “pp”+变量类型前缀+命名 三重指针: “ppp”+变量类型前缀+命名 ...... ③、全局变量用 g_开头,如一个全局的长型变量定义为 g_lFailCount,即:变量名 =g_+变量类型+变量的英文意思(或缩写) ④、静态变量用 s_开头,如一个静态的指针变量定义为 s_plPerv_Inst,即: 变量名 =s_+变量类型+变量的英文意思(或缩写) ⑤、成员变量用 m_开头,如一个长型成员变量定义为 m_lCount;即:变量名=m_+ 变量类型+变量的英文意思(或缩写) ⑥、对枚举类型(enum)中的变量,要求用枚举变量或其缩写做前缀。并且要
如: template class CcmTVector3d { public: TYPE x,y,z; }; ⑧、对常量(包括错误的编码)命名,要求常量名用大写,常量名用英文表达其
意思
l LONG
长整型
lOffset
long ld
double
长双精度型
ldRate
dw DWORD 32 位无符号整型
dwRange
p*
指针
pDoc
lp FAR*
远指针
lpszName
lpsz LPSTR 32 位字符串指针
lpszName
lpsz LPCSTR 32 位常量字符串指针
lpszName
类型前缀可以组合使用,例如"gc"表示字符 数组,"ppn"表示指向整型的指针的指针等 等。
变量的名字应当使用"名词"或者"形容词+ 名词"。例如:"nCode", "m_nState", "nMaxWidth" ....
常量
C++中引入了对常量的支持,常量的命名规则如下:
常量的命名
常量名由类型前缀+全大写字母组成,单词 间通过下划线来界定,如:cDELIMITER, nMAX_BUFFER ....
求用大写。 如:enum cmEMDAYS { EMDAYS_MONDAY; EMDAYS_TUESDAY; …… }; ⑦、对 struct、union、class 变量的命名要求定义的类型用大写。并要加上前缀, 其内部变量的命名规则与变量命名规则一致。 结构一般用 S 开头 如:struct ScmNPoint { int nX;//点的 X 位置 int nY; //点的 Y 位置 }; 联合体一般用 U 开头 如: union UcmLPoint { long lX; long lY; } 类一般用 C 开头 如: class CcmFPoint { public: float fPoint; }; 对一般的结构应该定义为类模板,为以后的扩展性考虑
global)
除非不得已,否则应该尽可能少使用全局变 量。
类型前缀标明一个变量的类型,可以有如下 几种:
前缀
说明
n
整型和位域变量
(number)
e
枚举型变量
(enumeration)
c
字符型变量(char)
b
布尔型变量(bool)
f
浮点型变量(float)
p
指针型变量和迭代子
推荐的组成形式
(pointer)
不同于 C++类的概念,传统的 C 结构体只是一种将一组数据捆绑在一起的方 式。传统 C 结构体的命名规则为:
传统 C 结构体的命名
传统 C 结构体的名称全部由大写字母组成, 单词间使用下划线界定,例如: "SERVICE_STATUS", "DRIVER_INFO" ....
函数
函数的命名
函数的名称由一个或多个单词组成。为便于 界定,每个单词的首字母要大写。
这种命名技术是由一位能干的 Microsoft 程序员查尔斯·西蒙尼(Charles Simonyi) 提出的,他出生在匈牙利。在 Microsoft 公司中和他一起工作的人被 教会使用这种约定。这对他们来说一切都很正常。但对那些 Simonyi 领导的项 目组之外的人来说却感到很奇特,他们认为这是死板的表达方式,甚至说带有这 样奇怪的外观是因为它是用匈牙利文写的。从此这种命名方式就被叫做匈牙利命 名法。
推荐的组成形式
函数名应当使用"动词"或者"动词+名词" (动宾词组)的形式。例如:"GetName()", "SetValue()", "Erase()", "Reserve()" ....
保护成员函数
保护成员函数的开头应当加上一个下划线 “_”以示区别,例如:"_SetState()" ....
私有成员函数
宏、枚举值
宏、枚举值的命名
宏和枚举值由全大写字母组成,单词间通过 下划线来界定,如:ERROR_UNKNOWN, OP_STOP ....
前缀 类型
描述
实例
c char
8 位字符
cGrade
str string 字符型
strName
ch TCHAR
如果_UNICODE 定义,则为 16 位 chName
匈牙利命名法是一种编程时的命名规范。基本原则是:变量名=属性+类型+对 象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的 一部分。命名要基于容易记忆容易理解的原则。保证名字的连贯性是非常重要的。
举例来说,表单的名称为 form,那么在匈牙利命名法中可以简写为 frm,则当表 单变量名称为 Switchboard 时,变量全称应该为 frmSwitchboard。这样可以很 容易从变量名看出 Switchboard 是一个表单,同样,如果此变量类型为标签,那 么就应命名成 lblSwitchboard。可以看出,匈牙利命名法非常便于记忆,而且 使变量名非常清晰易懂,这样,增强了代码的可读性,方便各程序员之间相互交 流代码。
字符
b BOOL
布尔值
bEnable
n ,i int
整型(其大小依赖于操作系统)nLength
si short int 短整型
siSequ
n UINT
无符号值(其大小依赖于操作系 nHeight
统)
w WORD
16 位无符号值
wPos
f float 浮点型
fRadius
d double 双精度型
dArea
类似地,私有成员函数的开头应当加上两个 下划线“__”,例如:"__DestroyImp()" ....
虚函数
虚函数习惯以“Do”开头,如: "DoRefresh()", "_DoEncryption()" ....
回调和事件处理函数
回调和事件处理函数习惯以单词“On”开 头。例如:"_OnTimer()", "OnExit()" ....
变量
变量应该是程序中使用最多的标识符了,变量的命名规范可能是一套 C++命 名准则中最重要的部分:
变量的命名
变量名由作用域前缀+类型前缀+一个或多 个单词组成。为便于界定,每个单词的首字
作用域前缀 类型前缀
母要大写。
对于某些用途简单明了的局部变量,也可以 使用简化的方式,如:i, j, k, x, y, z .m ,n ...
szAppName
二、命名规则: 1、变量名的命名规则 ①、变量的命名规则要求用“匈牙利法则”。即开头字母用变量的类型,其余部 分用变量的英文意思或其英文意思的缩写,尽量避免用中文的拼音,要求单词的第 一个字母应大写。 即: 变量名=变量类型+变量的英文意思(或缩写) 对非通用的变量,在定义时加入注释说明,变量定义尽量可能放在函数的开始处。 见下表: bool(BOOL) 用 b 开头 bIsParent byte(BYTE) 用 by 开头 byFlag short(int) 用 n 开头 nStepCount long(LONG) 用 l 开头 lSum char(CHAR) 用 c 开头 cCount float(FLOAT) 用 f 开头 fAvg double(DOUBLE) 用 d 开头 dDeta void(VOID) 用 v 开头 vVariant unsigned int(WORD) 用 w 开头 wCount unsigned long(DWORD) 用 dw 开头 dwBroad HANDLE(HINSTANCE) 用 h 开头 hHandle DWORD 用 dw 开头 dwWord LPCSTR(LPCTSTR) 用 str 开头 strString 用 0 结尾的字符串 用 sz 开头 szFileName