必威体育Betway必威体育官网
当前位置:首页 > IT技术

匈牙利命名法

时间:2019-09-27 18:14:29来源:IT技术作者:seo实验室小编阅读:51次「手机版」
 

匈牙利命名法

变量(还包括宏)的命名规则,比较系统和彻底的有 windows 编程中用到的匈牙利命名法。匈牙利命名法通过在变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域,类型等。这些符号可以多个同时使用,顺序是先m_(成员变量),再指针,再简单数据类型,再其他。例如:m_lpszStr, 表示指向一个以0字符结尾的字符串的长指针成员变量。

有关匈牙利命名法的一点有意思的说明是它的名字的由来。这种命名技术是由一位能干的 Microsoft 程序员查尔斯·西蒙尼(Charles Simonyi) 提出的,他出生在匈牙利。在 Microsoft公司中和他一起工作的人被教会使用这种约定。这对他们来说一切都很正常。但对那些 Simonyi 领导的项目组之外的人来说却感到很奇特,他们认为这是死板的表达方式,甚至说代有这样奇怪的外观是因为它是用匈牙利文写的。从此这种命名方式就被叫做匈牙利命名法。匈牙利命名法关键是:标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合,该单词要指明变量的用途。

匈牙利命名法中常用的小写字母的前缀

前  缀

类  型

a

数组 (Array)

b

布尔值 (Boolean)

by

字节 (Byte)

c

有符号字符 (Char)

cb

无符号字符 (Char Byte,没有多少人用)

cr

颜色参考值 (colorref)

cx,cy

坐标差(长度 ShortInt)

dw

Double word

fn

函数

h

handle

i

整型

l

长整型 (Long Int)

lp

Long Pointer

m_

类的成员

n

短整型 (Short Int)

np

Near Pointer

p

Pointer

s

字符串型

sz

以null做结尾的字符串型 (String with Zero End)

w

Word

但是在任何情况下,都硬性规定使用匈牙利命名法是迂腐的。尤其是 Unix 编程,在使用没有变量名、关键字自动补齐功能的编辑器,如 vi 下,去敲入大小写混合的变量名是痛苦的。其实只要注意两个原则:1) 含义清晰,不易混淆; 2) 不和其它模块、系统API的命名空间相冲突即可。

1.有意识的为变量名、宏名加上本模块的关键字,就不至于和其它模块、系统API的命名空间相冲突;例如: 宏的名称过短,如:DEBUG; 或_DEBUG,很可能和别的模块,系统模块相冲突;

2.局部变量尤其是循环变量外,使用约定俗成的 i,j,k ,没有问题;

3.宏、常量、枚举enum,全部用大写字母;

4.全局变量加上前缀 "g",后面跟上首字母大写的单词;

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

相关阅读

Excel如何拆分单元格方法步骤

我们做好了一个表格,有时需要将它拆分为若干个小的分别进行统计保存,这时就需要拆分单元格了。那么,Excel如何拆分单元格呢?现在和小

spring-boot启动失败 Unregistering JMX-exposed bean

寄语:    学习的路途各种文章只是给你提供一个思路,适不适合自己还是要自己去总结,以下是我的项目遇到同样的问题但是尝试了多种方

网赌被黑系统维护审核不给出款怎么办有什么方法解决?

人生不会太圆满,我们要摆正心态面对酸甜苦辣。人生是一场醒悟,不要昨天,不要明天,只要今天。活在当下,放眼未来。人生是一种态度,心静自

网赌威尼斯被黑系统维护注单异常不给出款怎么办有什么

互联网时代,为互联网的普遍性、生活快节奏的时代,受到前所未有的梦想,都想用最少的时间获取最大最快的收获。一般伴随而来的风险也大

excel2010宏不能用的解决方法

在Excel中经常需要用到宏,有些时候宏却不能运行,这个时候就需要我们进行排错了,接下来是seo实验室小编为大家带来的excel2010 宏不能

分享到:

栏目导航

推荐阅读

热门阅读