匈牙利命名法【转】

匈牙利命名法
MFC、句柄、控件及结构的命名规范

Windows类型
 样本变量
 MFC类
 样本变量
 
HWND
 hWnd;
 CWnd*
 pWnd;
 
HDLG
 hDlg;
 CDialog*
 pDlg;
 
HDC
 hDC;
 CDC*
 pDC;
 
HGDIOBJ
 hGdiObj;
 CGdiObject*
 pGdiObj;
 
HPEN
 hPen;
 CPen*
 pPen;
 
HBRUSH
 hBrush;
 CBrush*
 pBrush;
 
HFONT
 hFont;
 CFont*
 pFont;
 
HBITMAP
 hBitmap;
 CBitmap*
 pBitmap;
 
HPALETTE
 hPaltte;
 CPalette*
 pPalette;
 
HRGN
 hRgn;
 CRgn*
 pRgn;
 
HMENU
 hMenu;
 CMenu*
 pMenu;
 
HWND
 hCtl;
 CState*
 pState;
 
HWND
 hCtl;
 CButton*
 pButton;
 
HWND
 hCtl;
 CEdit*
 pEdit;
 
HWND
 hCtl;
 CListBox*
 pListBox;
 
HWND
 hCtl;
 CComboBox*
 pComboBox;
 
HWND
 hCtl;
 CScrollBar*
 pScrollBar;
 
HSZ
 hszStr;
 CString
 pStr;
 
POINT
 pt;
 CPoint
 pt;
 
SIZE
 size;
 CSize
 size;
 
RECT
 rect;
 CRect
 rect;
 

一般前缀命名规范

前缀
 类型
 实例
 
C
 类或结构
 CDocument,CPrintInfo
 
m_
 成员变量
 m_pDoc,m_nCustomers
 

?

?

?

变量命名规范

前缀
 类型
 描述
 实例
 
ch
 char
 8位字符
 chGrade
 
ch
 TCHAR
 如果_UNICODE定义,则为16位字符
 chName
 
b
 BOOL
 布尔值
 bEnable
 
n
 int
 整型(其大小依赖于操作系统)
 nLength
 
n
 UINT
 无符号值(其大小依赖于操作系统)
 nHeight
 
w
 WORD
 16位无符号值
 wPos
 
l
 LONG
 32位有符号整型
 lOffset
 
dw
 DWORD
 32位无符号整型
 dwRange
 
p
 *
 指针
 pDoc
 
lp
 FAR*
 远指针
 lpszName
 
lpsz
 LPSTR
 32位字符串指针
 lpszName
 
lpsz
 LPCSTR
 32位常量字符串指针
 lpszName
 
lpsz
 LPCTSTR
 如果_UNICODE定义,则为32位常量字符串指针
 lpszName
 
h
 handle
 Windows对象句柄
 hWnd
 
lpfn
 callback
 指向CALLBACK函数的远指针
 ?
 

应用程序符号命名规范

前缀
 符号类型
 实例
 范围
 
IDR_
 不同类型的多个资源共享标识
 IDR_MAIINFRAME
 1~0x6FFF
 
IDD_
 对话框资源
 IDD_SPELL_CHECK
 1~0x6FFF
 
HIDD_
 对话框资源的Help上下文
 HIDD_SPELL_CHECK
 0x20001~0x26FF
 
IDB_
 位图资源
 IDB_COMPANY_LOGO
 1~0x6FFF
 
IDC_
 光标资源
 IDC_PENCIL
 1~0x6FFF
 
IDI_
 图标资源
 IDI_NOTEPAD
 1~0x6FFF
 
ID_
 来自菜单项或工具栏的命令
 ID_TOOLS_SPELLING
 0x8000~0xDFFF
 
HID_
 命令Help上下文
 HID_TOOLS_SPELLING
 0x18000~0x1DFFF
 
IDP_
 消息框提示
 IDP_INVALID_PARTNO
 8~0xDEEF
 
HIDP_
 消息框Help上下文
 HIDP_INVALID_PARTNO
 0x30008~0x3DEFF
 
IDS_
 串资源
 IDS_COPYRIGHT
 1~0x7EEF
 
IDC_
 对话框内的控件
 IDC_RECALC
 8~0xDEEF
 

?

Microsoft MFC宏命名规范

名称
 类型
 
_AFXDLL
 唯一的动态连接库(Dynamic Link Library,DLL)版本
 
_ALPHA
 仅编译DEC Alpha处理器
 
_DEBUG
 包括诊断的调试版本
 
_MBCS
 编译多字节字符集
 
_UNICODE
 在一个应用程序中打开Unicode
 
AFXAPI
 MFC提供的函数
 
CALLBACK
 通过指针回调的函数 
 

库标识符命名法

标识符
 值和含义
 
u
 ANSI(N)或Unicode(U)
 
d
 调试或发行:D = 调试;忽略标识符为发行。
 

静态库版本命名规范


 描述
 
NAFXCWD.LIB
 调试版本:MFC静态连接库
 
NAFXCW.LIB
 发行版本:MFC静态连接库
 
UAFXCWD.LIB
 调试版本:具有Unicode支持的MFC静态连接库
 
UAFXCW.LIB
 发行版本:具有Unicode支持的MFC静态连接库
 

动态连接库命名规范

名称
 类型
 
_AFXDLL
 唯一的动态连接库(DLL)版本
 
WINAPI
 Windows所提供的函数
 

?

?

?

?

Windows.h中新的命名规范

类型
 定义描述
 
WINAPI
 使用在API声明中的FAR PASCAL位置,如果正在编写一个具有导出API人口点的DLL,则可以在自己的API中使用该类型
 
CALLBACK
 使用在应用程序回叫例程,如窗口和对话框过程中的FAR PASCAL的位置
 
LPCSTR
 与LPSTR相同,只是LPCSTR用于只读串指针,其定义类似(const char FAR*)
 
UINT
 可移植的无符号整型类型,其大小由主机环境决定(对于Windows NT和Windows 9x为32位);它是unsigned int的同义词
 
LRESULT
 窗口程序返回值的类型
 
LPARAM
 声明lParam所使用的类型,lParam是窗口程序的第四个参数
 
WPARAM
 声明wParam所使用的类型,wParam是窗口程序的第三个参数
 
LPVOID
 一般指针类型,与(void *)相同,可以用来代替LPSTR 
 

?


表一:匈牙利命名法

前缀
 类型
 描述
 实例
 
arr
 Array
 静态数组
 arrPoint
 
b
 BOOL
 布尔值
 bEnabled
 
by
 unsigned char(BYTE)
 8位无符号字符
 byWeek
 
ch
 Char
  8位字符
 chGrade
 
tch
 TCHAR
 如果是_UNICODE,为16位字符
 tchName
 
i/n
 Int
 整形(其大小依赖于操作系统)
 iRange
 
u
 UINT
 无符号整形(其大小依赖于操作系统)
 nLength
 
us
 unsigned short
 无符号短整形
 usPort
 
w
 WORD
 16位无符号值
 wParam
 
l
 LONG
 32位有符号整形
 loffset
 
dw
 DWORD
 32位无符号整形
 dwVolume
 
f
 Float
 4字节浮点数
 fHigh
 
d
 Double
 8字节浮点数
 dAmount
 
cy
 CURRENCY
 8字节货币类型
 cySell
 
p
 *
 指针
 pDoc
 
lp
 FAR *
 远指针
 lpDoc
 
lpsz
 LPSTR
 为32位字符串指针
 lpszName
 
lpcsz
 LPCSTR
 32位常量字符串指针
 lpcszName
 
lpctsz
 LPCTSTR
 如果_UNICODE定义,为32位常量字符串指针
 lpctszName
 
bstr
 BSTR
 带有4字节长度前缀的w_chart数组
 bstrMessage
 
pbstr
 BSTR*
 BSTR数据类型指针
 pbstrMsg
 
str
 String
 CString类型的字符串
 strMessage
 
och
 OLECHAR
 OLECHAR字符类型
 ochX
 
osz
 OLECHAR*
 OLECHAR字符串类型
 oszX
 
var
 VARIANT
 VARIANT数据类型
 var
 
pvar
 VARIANT*
 VARIANT数据类型指针
 pvar
 
sa
 SAFEARRAY
 SAFEARRAY数据类型
 sa
 
psa
 SAFEARRAY*
 SAFEARRAY数据类型指针
 psa
 
dlg
 CDialog
 Windows对话框
 dlg
 
stc
 CStatic
 Windows静态文本控件
 stc
 
edt
 Cedit
 Windows编辑框控件
 edt
 
lsb
 CListBox
 Windows列表控件
 lsb
 
btn
 CButton
 Windows按钮控件
 btn
 
scb
 CScrollBar
 Windows滚动条控件
 scb
 
spn
 CSpinButtonCtrl
 Windowswe微调按钮控件
 spn
 
tab
 CTabCtrl
 Windows选项卡控件
 tab
 
rtf
 CRichEditCtrl
 Windows富文本编辑框控件
 rtf
 
sld
 CSliderCtrl
 Window滑块控件
 sld
 
list
 ClistCtrl
 Windows列表控件
 list
 
tre
 CtreeCtrl
 Windows树形控件
 tre
 
dtc
 CDateTimeCtrl
 Windows时间选取器控件
 dtc
 
prg
 CProgressCtrl
 Windows进度指示器控件
 prg
 
cbo
 CComboBox
 Windows组合框控件
 cbo
 
ils
 CImageList
 Windows图像列表
 ils
 
tlb
 CToolBarCtrl
 Windows工具条控件
 tlb
 
mnu
 Cmenu
 Windows菜单控件
 mnu
 
sta
 CStatusBar
 Windows状态条控件
 sta
 
wnd
 CWnd
 Windows窗口
 wnd
 
cx
 X
 Windows X坐标
 cx
 
cy
 Y
 Windows Y坐标
 cy
 
pt
 Cpoint
 Windows点阵
 hWnd
 
size
 Csize
 Windows尺寸
 size
 
rect/rc
 Crect
 Windows矩形
 rect
 
pen
 Cpen
 Windows画笔
 pen
 
br
 Cbrush
 Windows刷子
 br
 
fnt
 Cfont
 Windows字体
 fnt
 
cr
 COLORREF
 Windows颜色值RGB
 cr
 
PMp
 Temp
  临时变量
 PMpBuff
 
h
 Handle
 Windows对象句柄
 hWnd
 
lpfn
 Callback
 指向CALLBACK函数的远指针
 lpfnAbort
 
it/iter
 iterator
 迭代子
 it
 
vect
 std::vector
 标准模板库
 vect
 
map
 std:map
 标准模板库
 map
 
deque
 std:deque
 标准模板库
 deque
 
list
 std:list
 标准模板库
 list
 
set
 std:set
 标准模板库
 Set
 
multiset
 std:multiset
 标准模板库
 multiset
 
multimap
 std:multimap
 标准模板库
 multimap
 

 

      指针类型的变量,必须加上前缀"p",如:int* pnValue;。

      全局(静态)变量的命名规则同第一条的规定,并且必须加上前缀"g_"。

      类成员(静态)变量的命名规则同第一条的规定,并且必须加上前缀"m_"。

      模块(函数/过程)内部的重要变量命名遵循第一条的规定。

      模块(函数/过程)内部的静态变量命名遵循第一条的规定,并且加上前缀"s_"。

      其余变量在不损害程序易读易懂原则的基础上酌情处理。这些变量通常是模块内的临时变量,如循环控制变量、数组的下标等,它们可用缩写进行简化处理,如:int i;。

3.1.1.1               常量命名规则

      宏(#define)或者常量修饰符(const):大写字母组成的名词词组,单词间用下划线作为连接符,如:#define INVALID_CLOSE 0;  const double INVALID_CLOSE = double(0);。

      枚举类型(enum):此时的命名规则同"变量命名的一般性规则",可参考MFC或ADO等的命名方式。

3.1.1.2             函数命名规则

单词构成的动宾词组,每个单词首字母大写,其余字母小写。如:void DrawLine ( void );。

3.1.1.3             类命名规则

      类的原型,是前缀"C"加单词构成的动宾词组,每个单词首字母大写,其余字母小写。如:class CStockPacket;     class  CPacket;。

      类的实例变量,采用小写首字母缩写的方式定义,如:CStockPacket sp;。

      在对类的成员变量和成员函数定义时,要加以分类,并界定相应的存取权限(参见表二:类成员的分类描述)

表二:类成员的分类描述

分类描述
 存取权限(依实际应用而定)
 
// Constructors
 Public
 
// Attributes
 Private
 
// Operations(对于com组件是//Methods)
 Public
 
// Overridables
 Protected
 
// Implementation
 Private
 


3.1.1.4             结构命名规则

      结构的原型采用组合词的方式定义,并且全部采用大写字符的形式。如:

typedef struct tagStockTrans

{

    DWORD       dwOpen;

    ...

}   STOCKTRANS;

      结构的实例变量,采用小写首字母缩写的方式定义,如:STOCKTRANS st;。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jenshy/archive/2006/04/23/673868.aspx

 

你可能感兴趣的:(匈牙利命名法【转】)