常用【变量命名法则】总结
- 格式:doc
- 大小:50.00 KB
- 文档页数:3
常用【变量命名法则】总结1、匈牙利命名法计算机程序设计中的一种命名规则,用这种方法命名的变量显示了其数据类型。
匈牙利命名法有两种:系统匈牙利命名法和匈牙利应用命名法。
匈牙利命名法被设计成语言独立的,并且首次在BCPL语言中被大量使用。
由于BCPL 只有机器字这一种数据类型,因此这种语言本身无法帮助程序员来记住变量的类型。
匈牙利命名法通过明确每个变量的数据类型来解决这个问题。
在匈牙利命名法中,一个变量名由一个或多个小写字母开始,这些字母有助于记忆变量的类型和用处,紧跟着的就是程序员选择的任何名称。
这个后半部分的首字母可以大写以区别前面的类型指示字母(参见駝峰式大小寫)。
系统命名法与应用命名法的区别在于前缀的目的。
在系统匈牙利命名法中,前缀代表了变量的实际数据类型。
例如:lAccountNum : 变量是一个长整型("l");arru8NumberList : 变量是一个无符号8位整型数组("arru8");szName : 变量是一个零结束字符串("sz"),这是西蒙尼最开始建议的前缀之一。
匈牙利应用命名法不表示实际数据类型,而是给出了变量目的的提示,或者说它代表了什么。
rwPosition : 变量代表一个行("rw")。
usName : 变量代表一个非安全字符串("us"),需要在使用前处理。
strName : 变量代表一个包含名字的字符串("str")但是没有指明这个字符串是如何实现的。
西蒙尼建议的大多数前缀都是自然语义的,但不是所有。
下面几个是来自原始论文的:p X是指向另一个X类型的指针,这包含非常少的语义信息。
d是一个前缀表示两个值的区别,例如,dY可能代表一个图形沿Y轴的距离,而一个仅仅叫做y的变量可能是一个绝对坐标。
这完全是自然语义的。
sz是一个无结束或零结束的字符串。
1、严格采用阶梯层次组织程序代码:各层次缩进的分格采用VC的缺省风格,即每层次缩进为4格,括号位于下一行。
要求相匹配的大括号在同一列,对继行则要求再缩进4格。
例如:2、提示信息字符串的位置在程序中需要给出的提示字符串,为了支持多种语言的开发,除了一些给调试用的临时信息外,其他所有的提示信息必须定义在资源中。
3、对变量的定义,尽量位于函数的开始位置。
二、命名规则:1、变量名的命名规则①、变量的命名规则要求用匈牙利法则”即开头字母用变量的类型,其余部分用变量的英文意思或其英文意思的缩写,尽量避免用中文的拼音,要求单词的第一个字母应大写。
即: 变量名=变量类型+变量的英文意思(或缩写)对非通用的变量,在定义时加入注释说明,变量定义尽量可能放在函数的开始处。
见下表:bool(BOOL)用b开头bIsParentbyte(BYTE)用by开头byFlagshort(i nt)用n开头n StepCo untIon g(LONG)用1开头lSumchar(CHAR)用c开头cCo untfloat(FLOAT)用f开头fAvgdouble(DOUBLE) 用d 开头dDetavoid(VOID)用v开头vVaria ntun sig ned int( WORD) 用w开头wCo untun sig ned Ion g(DWORD)用dw开头dwBroadHANDLE(HINSTANCE ) 用h开头hHa ndleDWORD用dw开头dwWordLPCSTR(LPCTSTR) 用str 开头strString用0结尾的字符串用sz开头szFileName对未给出的变量类型要求提出并给出命名建议给技术委员会。
②、指针变量命名的基本原则为:对一重指针变量的基本原则为:“ p”变量类型前缀+命名如一个float*型应该表示为pfStat对多重指针变量的基本规则为:二重指针:“ pp”变量类型前缀+命名三重指针:“ ppp”变量类型前缀+命名③、全局变量用g_开头,如一个全局的长型变量定义为g」FailCount,即:变量名=g_+变量类型+变量的英文意思(或缩写)④、静态变量用s_开头,如一个静态的指针变量定义为s_plPerv_ In st, 即: 变量名=s_+变量类型+变量的英文意思(或缩写)⑤、成员变量用m_开头,如一个长型成员变量定义为m」Count;即:变量名=m_+变量类型+变量的英文意思(或缩写)⑥、对枚举类型(enum )中的变量,要求用枚举变量或其缩写做前缀。
C语言变量名命名规则一、程序风格:1、严格采用阶梯层次组织程序代码:各层次缩进的分格采用VC的缺省风格,即每层次缩进为4格,括号位于下一行。
要求相匹配的大括号在同一列,对继行则要求再缩进4格。
例如:2、提示信息字符串的位置在程序中需要给出的提示字符串,为了支持多种语言的开发,除了一些给调试用的临时信息外,其他所有的提示信息必须定义在资源中。
3、对变量的定义,尽量位于函数的开始位置。
二、命名规则:1、变量名的命名规则①、变量的命名规则要求用“匈牙利法则”。
即开头字母用变量的类型,其余部分用变量的英文意思或其英文意思的缩写,尽量避免用中文的拼音,要求单词的第一个字母应大写。
即:变量名=变量类型+变量的英文意思(或缩写)对非通用的变量,在定义时加入注释说明,变量定义尽量可能放在函数的开始处。
见下表:对未给出的变量类型要求提出并给出命名建议给技术委员会。
②、指针变量命名的基本原则为:对一重指针变量的基本原则为:“p”+变量类型前缀+命名如一个float*型应该表示为pfStat对多重指针变量的基本规则为:二重指针:“pp”+变量类型前缀+命名三重指针:“ppp”+变量类型前缀+命名......③、全局变量用g_开头,如一个全局的长型变量定义为g_lFailCount,即:变量名=g_+变量类型+变量的英文意思(或缩写)④、静态变量用s_开头,如一个静态的指针变量定义为s_plPerv_Inst,即:变量名=s_+变量类型+变量的英文意思(或缩写)⑤、成员变量用m_开头,如一个长型成员变量定义为m_lCount;即:变量名=m_+变量类型+变量的英文意思(或缩写)⑥、对枚举类型(enum)中的变量,要求用枚举变量或其缩写做前缀。
并且要求用大写。
如:enum cmEMDAYS{EMDAYS_MONDAY;EMDAYS_TUESDAY;……};⑦、对struct、union、class变量的命名要求定义的类型用大写。
1、严格采用阶梯层次组织程序代码:各层次缩进的分格采用VC的缺省风格,即每层次缩进为4格,括号位于下一行。
要求相匹配的大括号在同一列,对继行则要求再缩进4格。
例如:2、提示信息字符串的位置在程序中需要给出的提示字符串,为了支持多种语言的开发,除了一些给调试用的临时信息外,其他所有的提示信息必须定义在资源中。
3、对变量的定义,尽量位于函数的开始位置。
二、命名规则:1、变量名的命名规则①、变量的命名规则要求用“匈牙利法则”。
即开头字母用变量的类型,其余部分用变量的英文意思或其英文意思的缩写,尽量避免用中文的拼音,要求单词的第一个字母应大写。
即:变量名=变量类型+变量的英文意思(或缩写)对非通用的变量,在定义时加入注释说明,变量定义尽量可能放在函数的开始处。
见下表:bool(BOOL) 用b开头bIsParentbyte(BYTE) 用by开头byFlagshort(int) 用n开头nStepCountlong(LONG) 用l开头lSumchar(CHAR) 用c开头cCountfloat(FLOAT) 用f开头fAvgdouble(DOUBLE) 用d开头dDetavoid(VOID) 用v开头vVariantunsigned int(WORD)用w开头wCountunsigned long(DWORD) 用dw开头dwBroadHANDLE(HINSTANCE)用h开头hHandleDWORD 用dw开头dwWordLPCSTR(LPCTSTR) 用str开头strString用0结尾的字符串用sz开头szFileName对未给出的变量类型要求提出并给出命名建议给技术委员会。
②、指针变量命名的基本原则为:对一重指针变量的基本原则为:“p”+变量类型前缀+命名如一个float*型应该表示为pfStat对多重指针变量的基本规则为:二重指针:“pp”+变量类型前缀+命名三重指针:“ppp”+变量类型前缀+命名......③、全局变量用g_开头,如一个全局的长型变量定义为g_lFailCount,即:变量名=g_+变量类型+变量的英文意思(或缩写)④、静态变量用s_开头,如一个静态的指针变量定义为s_plPerv_Inst,即:变量名=s_+变量类型+变量的英文意思(或缩写)⑤、成员变量用m_开头,如一个长型成员变量定义为m_lCount;即:变量名=m_+变量类型+变量的英文意思(或缩写)⑥、对枚举类型(enum)中的变量,要求用枚举变量或其缩写做前缀。
变量命名规范(C#,SQL,前端)总则1、变量命名包含两部分:头部+内容部分(其中头部⼀般为类型缩写,内容部分具体按变量作⽤命名。
如 intNumber)2、内容名默认为英⽂单词,若为中⽂拼⾳,则在最后补充 _cn,如 intShuZi_cn3、变量命名⽅式以驼峰⽅式,如 intParameterCount1、C#变量命名1、以变量关键字缩写开头(int、str、bol 等),如 intNumber(int型),strText(string型),clsClass(类)2、⼤部分关键字缩写为3个字母,少部分可以考虑1个或2个字母,如: o 对应 object(实例化的 class) dt 对应 DateTime⾃定义类命名⾯向对象基本上都是类,故⽽放弃 cls 开头的命名⽅式。
⽽是以类名结尾区分类的作⽤,且所有类以⼤写字母开头:(以区分类和对象,这种命名⽅式是我同事 catacat 提出)⽆尾部普通类Model 模型(如:UserModel),分两种,⼀种为实体模型(对应数据库的表),另⼀种为数据模型(没有数据库表),⼀般只有属性,没有⽅法 ViewModel 视图数据模型(⼀般⽤于视图显⽰、视图表单提交。
如:PwdRstViewModel 密码重置视图模型) ReturnModel 返回数据模型(⼀般⽤于格式化返回数据)Repository 仓储层类Service 服务层类其他⾃⾏扩充,如 Mapping(映射关系)2、SQL表表的种类⽐较多,但都以 t 开头,第⼆个字母表⽰表的类型,如 tbUser(⽤户表),trSystemLog(系统⽇⼦记录表)tb (table)业务表tr (r 为 record)记录表,如⽇志表、API调⽤记录表等td (d 为 dictionary)字典表ts (s 为 status)状态表(如:tsQueue,队列调⽤状态表)视图视图是⼀般由多张 table 关联,这⾥不再区分视图的作⽤,故⽽视图都是以 v 开头v (view)视图特别的,视图内的表若是带了 with(nolock),将会以 vw 开头,标识这个视图已实现不锁表查询(查询时可不添加 with(nolock) )函数ft (function table)表值函数fv (function value)标量值函数 fs (function scalar)标量值函数(弃⽤)fg (function group)聚合函数存储过程p 普通存储过程pf (procedure function)实现某种功能的存储过程pr (procedure report)报表数据源pt (procedure task)作业(⽤于数据库作业)3、前端Html 部分class 的命名应该要有层级id 命名可考虑以 i- 开头,如 i-body(⽅便与 class 区分)JS部分⼀般以⼀个字母开头,如 i 表数字,s 表字符串,o 表object, e 表element,b 表bool,特别的,有 md 表模块(module)附录:循环⽤:i,j,k数量:n,m。
C/C++变量命名规则变量命名规则是为了增强代码的可读性和容易维护性。
以下为C++必须遵守的变量命名规则:1、变量名只能是字母(A-Z,a-z)和数字(0-9)或者下划线(_)组成。
2、第一个字母必须是字母或者下划线开头。
3、不能使用C++关键字来命名变量,以免冲突。
4、变量名区分大小写。
变量命名规则:一、用最短字符表示最准确的意义。
二、使用变量前缀。
1、整型前缀int nId; //int前缀:nshort sId; //short前缀:sunsigned int unId // unsigned int 前缀:unlong lId; //long前缀:l2、浮点型前缀float fValue; //float前缀:fdouble dValue; //double前缀:d3、字符型前缀char chChar; //char前缀:ch4、字符串前缀char szPath; //char字符串前缀:szstring strPath; //string字符串前缀:strCString strPath; //MFC CString类前缀:str5、布尔型前缀bool bIsOK; //bool类型前缀:bBOOL bIsOK; //MFC BOOL前缀:b6、指针型前缀char * pPath; //指针前缀:p7、数组前缀int arrnNum; //数组前缀:arrCString arrstrName; //数组前缀+类型前缀+名称8、结构体前缀STUDENT tXiaoZhang; //结构体前缀:t9、枚举前缀enum emWeek; //枚举前缀:em10、字节的前缀BYTE byIP; //字节前缀:by11、字的前缀DWORD dwMsgID; //双字前缀:dwWORD wMsgID; //单字前缀:w12、字符指针前缀LPCTSTR ptszName; //TCHAR类型为ptszLPCSTR pszName; //pcszLPSTR pszName; //psz13、STL容器前缀vector<int> vecValue; //vector容器前缀:vec14、RECT矩形结构前缀RECT rcChild; //rcCRECT rcChild/ //rc15、句柄前缀HWND hWndDlg; //hHBRUSH hBr; //hHPEN hPen; //hHBITMAP hBmpBack; //h16、Windows颜色前缀COLORREF crFont; //cr17、Windows DC前缀CDC dcClient; //dc三、类的成员变量以m_开头,后面为变量,变量同时还要加前缀。
Python是一种强大的编程语言,广泛应用于数据分析、人工智能、网络开发等领域。
在Python编程中,变量是一个非常重要的概念,它可以用来存储数据,并且可以通过变量名来引用这些数据。
在Python 中,变量的命名规则对于编程的规范性和可读性非常重要。
本文将会介绍Python变量的命名规则,并且就如何正确命名变量给出一些建议。
一、Python变量命名规则1. 变量名只能包含字母、数字和下划线。
字母可以是大写或小写。
2. 变量名的第一个字符必须是字母或下划线。
3. 变量名不能是Python中的关键字,比如if、else、while、for等。
4. 变量名是区分大小写的,比如name和Name是两个不同的变量名。
5. 变量名最好能够反映出变量所代表的含义,以提高代码的可读性。
6. 变量名应该尽可能简洁明了,避免使用过长或者过于晦涩的变量名。
7. 在命名变量时,建议使用下划线来分割单词,比如student_name,而不是使用驼峰命名法比如studentName。
8. 尽量避免使用单个字母作为变量名,除非是临时循环变量。
二、正确的变量命名示例1. 正确的变量命名示例a. student_nameb. agec. average_scored. is_passed2. 不推荐的变量命名示例a. StudentName(驼峰命名法不被推荐)b. axxx(不具有描述性,不易读)c. if(关键字不可用作变量名)d. my_score_is_very_good(过长的变量名)三、如何正确命名变量1. 变量名应该能够准确地描述变量所代表的含义。
用student_name 来代表学生尊称,用age来代表芳龄等。
这样做可以提高代码的可读性。
2. 在命名变量时,可以采用下划线分隔单词的方式,这样可以更清晰地显示变量名中的各个单词。
3. 尽量避免使用拼音或者缩写作为变量名,因为这会降低代码的可读性和可维护性。
4. 变量名的长度应该适中,不要过长也不要太短,以保证变量名既具有描述性又简洁明了。
Python中变量命名规则在编写Python代码时,变量是非常重要的元素之一。
变量用于存储数据,并且可以根据需要进行修改。
为了编写清晰、易读和易于维护的代码,我们需要遵循一些规则来命名变量。
1. 变量命名规则概述•变量名只能包含字母(大小写均可)、数字和下划线(_),不能使用其他特殊字符。
•变量名不能以数字开头。
•变量名区分大小写,例如myVariable和myvariable是不同的变量。
•变量名应该具有描述性,以便于其他人阅读和理解代码。
2. 命名风格在Python中,有几种常见的命名风格,包括:2.1 小驼峰式命名法(lower camel case)在小驼峰式命名法中,第一个单词的首字母小写,后续单词的首字母大写。
例如:myVariable = 102.2 大驼峰式命名法(upper camel case)在大驼峰式命名法中,每个单词的首字母都大写。
通常用于类的命名。
例如:MyClass = MyClass()2.3 下划线命名法(snake case)在下划线命名法中,单词之间用下划线分隔。
通常用于函数、方法和变量的命名。
例如:my_variable = 102.4 常量命名在Python中,常量通常使用全大写字母,并且单词之间用下划线分隔。
例如:PI = 3.141593. 变量命名的最佳实践除了上述的基本规则和命名风格外,还有一些最佳实践可以帮助我们编写更好的代码。
3.1 使用描述性的变量名变量名应该具有描述性,能够清晰地表达变量所代表的含义。
避免使用单个字符或缩写作为变量名,这样可以提高代码的可读性。
# 不推荐a = 10# 推荐age = 103.2 避免使用保留字Python有一些保留字,它们具有特殊的含义,并且不能用作变量名。
请避免使用这些保留字作为变量名。
# 不推荐for = 10# 推荐count = 103.3 使用合适的命名长度变量名应该足够长,以便于理解其含义,但也不应过长。
变量命名规范变量是计算机编程中一个非常重要的概念,它用于存储和表示不同的数据。
在编程中,良好的变量命名规范是非常重要的,它可以提高代码的可读性、可维护性和可扩展性。
下面是关于变量命名规范的一些重要规则和建议。
1. 使用有意义的名称:变量名称应该具有清晰的含义,能够准确描述变量所代表的数据。
这样可以提高代码的可读性和可理解性。
避免使用简单的单个字符或没有意义的名称。
2. 使用驼峰命名法:在变量名称中使用驼峰命名法可以提高代码的可读性。
驼峰命名法是将单词的首字母小写,并将后续单词的首字母大写。
例如:myVariable。
3. 避免使用特殊字符:变量的名称应该只包含字母、数字和下划线。
避免使用特殊字符和符号,如空格、标点符号、运算符等。
这样可以避免潜在的命名错误和代码问题。
4. 使用有意义的变量名:变量名应该具有描述性,能够准确反映变量所代表的数据。
避免使用模糊、不清晰、晦涩难懂的变量名。
例如,使用age代表年龄,使用name代表姓名等。
5. 避免使用保留字:避免使用编程语言中的保留字作为变量名称。
保留字是编程语言中具有特殊意义的单词,如if、for、while等。
使用保留字作为变量名可能导致编译错误或语法错误。
6. 区分大小写:在大多数编程语言中,变量是区分大小写的。
因此,变量名必须严格遵守大小写。
例如,变量Name和变量name是不同的变量。
7. 使用合适长度的变量名:变量名应该足够长,以便表达清楚变量的含义。
然而,也不应该过长,否则会增加代码的复杂性和可读性。
尽量选择简洁明了的变量名。
8. 遵循命名规范:不同的编程语言有不同的命名规范和约定。
在选择变量名时,应该遵循所使用语言的命名规范。
例如,在Python中,变量名通常使用小写字母,并通过下划线分隔单词。
9. 不要使用数字作为开头:变量名不应该以数字开始,因为这可能会导致编译错误或语法错误。
变量名应该以字母或下划线开头。
10. 注重一致性:在整个代码中保持一致的变量命名规范是非常重要的。
1、严格采用阶梯层次组织程序代码:各层次缩进的分格采用VC的缺省风格,即每层次缩进为4格,括号位于下一行。
要求相匹配的大括号在同一列,对继行则要求再缩进4格。
例如:2、提示信息字符串的位置在程序中需要给出的提示字符串,为了支持多种语言的开发,除了一些给调试用的临时信息外,其他所有的提示信息必须定义在资源中。
3、对变量的定义,尽量位于函数的开始位置。
二、命名规则:1、变量名的命名规则①、变量的命名规则要求用“匈牙利法则”。
即开头字母用变量的类型,其余部分用变量的英文意思或其英文意思的缩写,尽量避免用中文的拼音,要求单词的第一个字母应大写。
即:变量名=变量类型+变量的英文意思(或缩写)对非通用的变量,在定义时加入注释说明,变量定义尽量可能放在函数的开始处。
见下表:bool(BOOL) 用b开头bIsParentbyte(BYTE) 用by开头byFlagshort(int) 用n开头nStepCountlong(LONG) 用l开头lSumchar(CHAR) 用c开头cCountfloat(FLOAT) 用f开头fAvgdouble(DOUBLE) 用d开头dDetavoid(VOID) 用v开头vVariantunsigned int(WORD)用w开头wCountunsigned long(DWORD) 用dw开头dwBroadHANDLE(HINSTANCE)用h开头hHandleDWORD 用dw开头dwWordLPCSTR(LPCTSTR) 用str开头strString用0结尾的字符串用sz开头szFileName对未给出的变量类型要求提出并给出命名建议给技术委员会。
②、指针变量命名的基本原则为:对一重指针变量的基本原则为:“p”+变量类型前缀+命名如一个float*型应该表示为pfStat对多重指针变量的基本规则为:二重指针:三重指针:......③、全局变量用g_开头,如一个全局的长型变量定义为g_lFailCount,即:变量名=g_+变量类型+变量的英文意思(或缩写)④、静态变量用s_开头,如一个静态的指针变量定义为s_plPerv_Inst,即:变量名=s_+变量类型+变量的英文意思(或缩写)⑤、成员变量用m_开头,如一个长型成员变量定义为m_lCount;即:变量名=m_+变量类型+变量的英文意思(或缩写)⑥、对枚举类型(enum)中的变量,要求用枚举变量或其缩写做前缀。
常用【变量命名法则】总结
1、匈牙利命名法
计算机程序设计中的一种命名规则,用这种方法命名的变量显示了其数据类型。
匈牙利命名法有两种:系统匈牙利命名法和匈牙利应用命名法。
匈牙利命名法被设计成语言独立的,并且首次在BCPL语言中被大量使用。
由于BCPL 只有机器字这一种数据类型,因此这种语言本身无法帮助程序员来记住变量的类型。
匈牙利命名法通过明确每个变量的数据类型来解决这个问题。
在匈牙利命名法中,一个变量名由一个或多个小写字母开始,这些字母有助于记忆变量的类型和用处,紧跟着的就是程序员选择的任何名称。
这个后半部分的首字母可以大写以区别前面的类型指示字母(参见駝峰式大小寫)。
系统命名法与应用命名法的区别在于前缀的目的。
在系统匈牙利命名法中,前缀代表了变量的实际数据类型。
例如:
lAccountNum : 变量是一个长整型("l");
arru8NumberList : 变量是一个无符号8位整型数组("arru8");
szName : 变量是一个零结束字符串("sz"),这是西蒙尼最开始建议的前缀之一。
匈牙利应用命名法不表示实际数据类型,而是给出了变量目的的提示,或者说它代表了什么。
rwPosition : 变量代表一个行("rw")。
usName : 变量代表一个非安全字符串("us"),需要在使用前处理。
strName : 变量代表一个包含名字的字符串("str")但是没有指明这个字符串是如何实现的。
西蒙尼建议的大多数前缀都是自然语义的,但不是所有。
下面几个是来自原始论文的:
p X是指向另一个X类型的指针,这包含非常少的语义信息。
d是一个前缀表示两个值的区别,例如,dY可能代表一个图形沿Y轴的距离,而一个仅仅叫做y的变量可能是一个绝对坐标。
这完全是自然语义的。
sz是一个无结束或零结束的字符串。
在C中,这包含一些语义信息,因为它不是很明确一个char*类型的变量是一个指向单个字符的指针,还是一个字符数组,亦或是一个零结束字符串。
w标记一个变量是一个字。
这基本上没有包含什么语义信息,因此大概会被当成是系统命名法。
b标记了一个字节,和w对比可能有一些语义信息,因为C语言中,只有字节大小的数据是char型的,因此这些有时候被用来保存数值。
这个前缀也许可以明确某个变量保存的是应该被看作是字母(或更一般的字符)的数值还是一个数字。
由于这种命名法通常使用小写字母开头用来助记,但是并没有对助记符本身作规定。
有几种被广泛使用的习惯(见下面的示例),但是任意字母组合都可以被使用,只要它们在代码主体中保持一致就可以了。
在使用匈牙利系统命名法的代码中有时候也可能包含系统匈牙利命名法,即在描述被单独以类型方式定义的变量时使用。
示例
bBusy : 布尔型
cApples : 项目计数
dwLightYears : 双字(系统)
fBusy : 布尔型(标记)
nSize : 整型(系统)或计数(应用程序)
iSize : 整型(系统)或索引(应用程序)
fpPrice: 浮点数
dbPi : 双精度浮点数(系统)
pFoo : 指针
rgStudents : 数组或范围
szLastName : 零结束字符串
u32Identifier : 无符号32位整型(系统)
stTime : 时钟结构
fnFunction : 函数名
对于指针和数组来说,它们实际上并不是数据类型,因此通常在助记符后面跟着实际元素的类型。
pszOwner : 指向零结束字符串的指针
rgfpBalances : 浮点值的数组
由于匈牙利命名法可以被应用在任何程序设计语言和环境中,因此被微软广泛用在C 语言中,特别是在Microsoft Windows里。
由此一来,许多常见的匈牙利命名法的结构都和Windows紧密相关:
hwndFoo : 窗口句柄
lpszBar : 指向零结束字符串的长指针
这种命名法又是在C++中被扩展而包含变量的作用域,由一个下划线隔开:
g_nWheels : 全局命名空间的成员,整型
m_nWheels : 结构体/类成员,整型
2、系统匈牙利命名法的优点
(其中一些只适用于系统匈牙利命名法)支持者声称匈牙利命名法的好处包括:[1]
1)从名字中就可以看出变量的类型
2)拥有类似语义的多个变量可以在一个代码块中使用:dwWidth, iWidth, fWidth, dWidth 3)变量名在仅仅知道他们的类型时可以被轻易记住
4)可以使变量名更加一致
5)决定一个变量名的时候可以更机械化,更快
6)不合适的类型转换和操作可以在阅读代码的时候被检测出来
7)在那些数字被当作字符串处理的基于字符串的语言中非常有用(例如Tcl)
8)在匈牙利应用命名法中,变量名确保不会犯以下错误:
heightWindow = window.getWidth()
9)在使用动态类型语言或完全无类型的语言编程时,关于类型的修饰可以更简化。
这种语言一般不包含类型修饰(或者可选),因此唯一可以看出哪些类型是被允许的只有名字本身、
文档以及通过阅读代码来明白它们在做什么。
在这些语言中,包含对于变量类型的指示可能会有助于程序员。
就像上面提到的,匈牙利命名法扩展了这样的语言(BCPL)。
10)在包含许多全局对象的复杂程序中(VB/Delphi Forms),拥有一个基本的前缀命名法可以简化在编辑器中查找组件的工作。
按btn<Ctrl-Space>可以使编辑器弹出一个Button 对象的列表。
3、匈牙利系统命名法的缺点
批评者认为:
1)匈牙利命名法在编译器做类型检查时是多余的。
一个提供类型检查的语言在确定一个变量与其类型一致时,比人眼仅仅检查变量的用法与变量名一致要强大的多。
2)一些现代的集成开发环境,如Visual Studio在需要时可以显示变量类型,并且自动标记不匹配的类型。
使用这种命名法完全没有必要。
3)匈牙利命名法在被用作代表多个属性的时候会造成困惑,如a_crszkvc30LastNameCol:一个常量引用参数,保存了一个varchar(30)类型的数据库列LastName的内容,而这列又是这个表的主键的一部分。
4)在代码更改后可能造成不一致。
如果一个变量的类型改变了,不是变量名的修饰与新的类型不一致,就是变量名必须被改变。
5)由于变量名和类型捆绑在一起,因此不利于代码的移植。
一个典型的众所周之的例子就是WPARAM类型,以及在许多Windows系统函数声明中使用的wParam参数。
它原本是一个16位的类型,但是在后来的操作系统中被改成了32位或64位,但仍保留原来的名字(它实际的基础类型是UINT_PTR,即一个大小足够保存一个指针的无符号整型)。
6)大多数时候,看到一个变量就意味着知道了它的类型。
但是,如果你不知道一个变量是干什么的,知道了它的类型也没什么帮助。
.NET Framework,微软新的软件开发平台,除了接口类型一般不适用匈牙利命名法。
在.NET 中,习惯在接口类型前放一个I(例如Windows Forms中的IButtonControl接口。
).NET Framework指导方针建议程序员不要用匈牙利命名法,但是没有指明不要用系统匈牙利命名法还是匈牙利应用命名法,或者是两者都不要用。
与此对比,Java的标准库中连接口类型也不加前缀。