匈牙利命名法

来源:互联网 发布:淘宝店铺名称 编辑:程序博客网 时间:2024/06/03 19:43

匈牙利命名法是微软推广的一种关于变量、函数、对象、前缀、宏定义等各种类型的符号的命名规范。匈牙利命名法的主要思想是:在变量和函数名中加入前缀以增进人们对程序的理解。它是由微软内部的一个匈牙利人发起使用的,结果它在微软内部逐渐流行起来,并且推广给了全世界的Windows开发人员。先知Petzold在他的巨著《Programming windows》中采用匈牙利记法。由于该书影响力巨大,故他间接也成了匈牙利记法的布道者。下面将介绍匈牙利命名法。

 

一、变量命名

        变量名前加上表示其类型的前缀(如下表),如果变量名由几个单词组成,那么每个单词首字母大写,禁用下划线_

 

a        Array                                                 数组

b        BOOL (int)                                                布尔(整数)

by      Unsigned Char (Byte)                    无符号字符(字节)

c        Char                                                           字符(字节)

cb      Count of bytes                                字节数

cr       Color reference value                                  颜色(参考)值

cx      Count of x (Short)                                       x的集合(短整数)

dw     DWORD   (unsigned long)                          双字(无符号长整数)

f         Flags   (usually multiple bit values)               标志(一般是有多位的数值)

fn       Function                                                     函数

g_      global                                                         全局的

h        Handle                                                       句柄

i        Integer                                                        整数

l        Long                                                           长整数

lp      Long pointer                                              长指针

m_    Data member of a class                              一个类的数据成员

n       Short int                                                     短整数

p       Pointer                                                      指针

s       String                                                        字符串

sz      Zero terminated String                               以0结尾的字符串

tm     Text metric                                                文本规则

u       Unsigned int                                              无符号整数

ul      Unsigned long (ULONG)                          无符号长整数

w      WORD (unsigned short)                           无符号短整数

x,y    x, y coordinates (short)                             坐标值/短整数

v       void                                                         空

 

二、函数命名

        规则同变量命名,只是不用加前缀。

 

三、类型和常量命名

        字符全部大写,可以用下划线。

 

四、类的命名

        以C为前缀,每个单词的首字母大写。

 

五、VC常用前缀列表:

 

前缀               类型                       描述                                                                               例子

ch                   char                         8位字符                                                                         chGrade

ch                   TCHAR                  16位UNICODE类型字符                                              chName

b                    BOOL                     布尔变量                                                                        bEnabled

n                     int                            整型(其大小由操作系统决定)                               nLength

n                    UINT                       无符号整型(其大小由操作系统决定)                   nLength

w                   WORD                    16位无符号整型                                                           wPos

l                     LONG                     32位有符号整型                                                           lOffset

dw                 DWORD                 32位无符号整型                                                           dwRange

p                    *                              Ambient memory model pointer 内存模块指针,指针变量         pDoc

lp                   FAR*                      长指针                                                                            lpDoc

lpsz                LPSTR                    32位字符串指针                                                            lpszName

lpsz                LPCSTR                 32位常量字符串指针                                                    lpszName

lpsz                LPCTSTR               32位UNICODE类型常量指针                                      lpszName

h                    handle                      Windows对象句柄                                                         hWnd

lpfn                (*fn)()                      回调函数指针                                                                lpfnAbort

 

 

MSDN中给出了一段遵守代码风格和匈牙利命名法的代码参考如下:

 

1   #include “sy.h”

2   extern int *rgwDic;

3   extern int bsyMac;

4   struct SY *PsySz(char sz[])

6   {

7           char *pch;

8           int cch;

9           struct SY *psy, *PsyCreate();

10         int *pbsy;

11         int cwSz;

12         unsigned wHash=0;

13         pch=sz;

14         while (*pch!=0)

15         wHash=wHash<>11+*pch++;

16         cch=pch-sz;

17         pbsy=&rgbsyHash[(wHash&077777)%cwHash];

18         for (; *pbsy!=0; pbsy = &psy->bsyNext)

19        {

20                  char *szSy;

21                  szSy= (psy=(struct SY*)&rgwDic[*pbsy])->sz;

22                  pch=sz;

23                  while (*pch==*szSy++)

24                  {

25                          if (*pch++==0)

26                                   return (psy);

27                   }

28         }

29         cwSz=0;

30         if (cch>=2)

31                    cwSz=cch-2/sizeof(int)+1;

32        *pbsy=(int *)(psy=PsyCreate(cwSY+cwSz))-rgwDic;

33        Zero((int *)psy,cwSY);

34        bltbyte(sz, psy->sz, cch+1);

35        return(psy);

36   }

原创粉丝点击