匈牙利命名法是一种在编程中广泛使用的命名规则,它主要目的是通过变量名来明确地表示变量的类型、用途和范围,从而提高代码的可读性和可维护性。这种命名方法由查尔斯·西蒙尼(Charles Simonyi)在微软开发期间提出,尤其在早期的Windows API和MFC(Microsoft Foundation Classes)中被广泛应用。 匈牙利命名法的基本结构包括三个部分:范围前缀、类型前缀和限定词。以下是对这些部分的详细解释: 1. **范围前缀**: - `g_`:表示全局作用域的变量,通常应避免过多使用全局变量。 - `m_`:表示成员变量,用于类或结构体内部。 - `l_`:表示局部作用域的变量,但使用较少,因为局部变量的生命周期通常较短,其作用域清晰。 2. **类型前缀**: - `Lm`:表示类或接口,如`LmObject`。 - `I`:表示接口,如`IUnknown`。 - `CDlg`:对话框类的前缀。 - `_Mt`:MouseTool的派生类前缀。 - `_Rb`:橡皮条类的前缀。 3. **限定词**: - 数据类型相关的前缀,如`ch`表示8位字符,`b`表示布尔值,`n`表示整数等。 - 特殊用途的前缀,例如界面模块的`Ui`,装配模块的`Asm`等。 4. **特定类型的前缀**: - 对于指针类型,`p`表示普通指针,`lp`表示远指针,`lpsz`表示指向字符串的指针等。 - 对于Windows对象,如`HWND`(窗口句柄),`HDC`(设备上下文句柄)等,有对应的前缀。 5. **宏定义命名**: - `IDR_`:用于标识多个资源共享的类型,如`IDR_MAINFRAME`。 通过这种命名规则,程序员可以快速识别出变量的用途和类型,减少理解代码的时间,从而提高工作效率。例如,`m_pDoc`就表明这是一个类的成员,且是一个指向某种文档对象的指针。 然而,随着编程语言的发展,如C++的模板和强类型系统,以及一些现代编程实践的提倡,匈牙利命名法的使用已经逐渐减少。现代的编程风格更倾向于使用有意义的驼峰式命名或下划线分隔的全小写命名,让类型信息通过类型系统而不是变量名来传达。尽管如此,理解匈牙利命名法仍然对阅读和维护旧代码或与使用该命名法的库进行交互是很有帮助的。
剩余8页未读,继续阅读
- 粉丝: 0
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助