匈牙利命名法详解:变量规则与特殊约定

3星 · 超过75%的资源 需积分: 10 8 下载量 160 浏览量 更新于2024-09-13 收藏 157KB DOC 举报
匈牙利命名法则是一种在软件开发中广泛使用的命名规范,它旨在提高代码的可读性和组织性,特别是在大型项目中。这种命名规则主要用于C++和类似语言中,通过特定的前缀和范围来区分变量的类型、作用域和意义。 1. 命名结构: - 变量名通常由三部分组成:范围前缀、类型前缀和限定词。范围前缀用于标识变量的作用域(全局、成员或局部),类型前缀指示变量的数据类型,而限定词提供变量的具体含义。 2. 特殊类型命名: - 类和接口的前缀有特定规则: - 类(Class):前缀为`Lm`,如`LmObject`,表示类的通用定义,但如果是模块内而非全局的类,可以加上模块名称的缩写,如`LmSketPoint`。 - 接口(Interface):前缀为`I`,如`IUnknown`。 - 特殊类的前缀: - MouseTool派生类:`_Mt` - 对话框类:`CDlg` - 橡皮条类:`_Rb` 3. 范围前缀: - 全局变量:`g_`,如`g_Servers` - 成员变量:`m_`,如`m_pDoc` - 局部变量:`l_`,但应尽量减少使用,因为它们的作用域有限且易导致命名冲突 4. 数据类型前缀: - 字符类型:`ch`(8-bit)和`tch`(16-bit Unicode) - 布尔类型:`b` - 整数类型:`n`(32-bit signed,大小取决于操作系统)和`w`(16-bit unsigned) - 长整型:`l`(32-bit signed) - 无符号整型:`dw`(32-bit unsigned) - 指针类型:`p` 5. 建议与最佳实践: - 尽可能避免使用全局变量,尤其是没有明确指定模块的变量,因为这可能导致代码维护困难。如果必须使用,要在类型前缀后添加相应的模块标识,如`Fea`, `Sket`, `Asm`, `Lay`, `Surf`, 或`Ui`。 - 类的实例命名遵循类名的命名原则,例如`LmSketPoint`的实例可能命名为`_StartPoint`或`_EndPoint`,以反映实例的特定功能。 匈牙利命名法通过细致的分类和标准化的前缀,帮助程序员清晰地理解代码中变量的含义,提高代码的可读性和一致性。遵循这些规则,可以有效降低代码出错的可能性,并增强团队协作的效率。