匈牙利命名法

匈牙利命名法(Hungarian Notation)是一种编程中的命名约定,由微软程序员 Charles Simonyi 在 20 世纪 80 年代提出。

它的核心思想是:在变量名或标识符前增加前缀,以表明其数据类型或用途,从而提高代码的可读性和可维护性。

 

1. 基本规则

    • 前缀 + 描述性名称
      格式:[前缀][描述名]
      例如:strName(字符串类型)、nCount(整数类型)。

    • 前缀通常小写,后面的描述名通常首字母大写(驼峰式)或根据语言习惯。

2. 常见前缀示例

前缀含义示例
b 布尔值(BOOL) bEnabled
c 字符(char) cLetter
i / n 整数(int) iCountnSize
f 浮点数(float) fPrice
d 双精度浮点(double) dRate
str 字符串(string) strName
p 指针(pointer) pNode
lp 长指针(long pointer,Win16遗留) lpBuffer
dw 双字(DWORD,32位无符号) dwSize
w 字(WORD,16位无符号) wID
by 字节(BYTE) byData
sz 以零结尾的字符串(C字符串) szPath
h 句柄(handle) hWnd
arr / a 数组 arrItems
fn 函数 fnCallback

 

 优点与缺点

优点

  • 提高可读性:通过前缀快速识别变量类型或用途。

  • 减少类型错误:在弱类型语言或大型项目中尤其有用。

  • 便于维护:代码自文档化。

缺点

  • 冗余:现代 IDE 可提示类型,前缀显得多余。

  • 类型变更麻烦:若变量类型改变,需重命名所有引用。

  • 过度使用导致混乱:如 lpszFileName(长指针指向零终止字符串)过于繁琐。

现代开发中的使用情况

    • 逐渐淘汰:在 C#、Java、Python 等现代语言中不推荐使用。

    • 遗留代码:在 Windows API、MFC、早期 C/C++ 项目中仍常见。

    • 变体使用:部分团队保留“语义前缀”(如 m_ 表示成员变量,s_ 表示静态变量)。

posted @ 2025-12-22 14:01  家煜宝宝  阅读(4)  评论(0)    收藏  举报