返回首页

简介
这是一篇文章,参考表打印出来,并坚持在墙上。匈牙利表示法
"匈牙利表示法"是微软的查尔斯西蒙尼匈牙利??故名。大多数程序员似乎坚持他们喜欢或开发出不同的味道的味道。这是一个为那些想使用它的起点。您认为合适的添加额外的空白行。
数据类型前缀范例
布尔
B
bContinue
诠释
n的
参数nIndex

n的
参数nIndex
字符
C
cFirstInitial
浮法
f
百分比

ð
dMetres

L
lCarCount
字符串 sCustomerName
空终止字符串
SZ
szCustomerName
无符号整数(字)
W
wCount
无符号长整数(DWORD)
DW
dwAtomCount
指针
P
pNext
处理
H
HWND FN
fnReport

C
CParser
类的成员变量
M_
M_
阵列 aYears
全球
G_
g_szDirectory
Windows消息
消息
msgCut
您可以添加一些前缀意义。例如一个成员变量,这是一个空终止字符串,"m_szName"。另一种可能是一个全球性的整数,例如。 "g_nElementCount"。Windows资源资源类型前缀范例
菜单项资源
ID_
ID_EDIT_CUT
字符串
IDS_
IDS_STRING1
对话框控制
IDC_
IDC_EDITBOX
图标
IDI_
IDI_MAINICON
光标
IDC_CURSOR_
IDC_CURSOR_ARROW
对话框
IDD_
的IDD_ABOUTBOX
加速器
IDR_
IDR_ACCELERATOR
位图
IDB_
IDC_ARROW
{A0免费免费}更新/建议,我将根据需要更新的文章。

回答

评论会员:费利克斯卓 时间:2011/11/28
公告微软一直使用我最近的整数(检查最新的共同控制)?可能是你需要更新这个吗?
评论会员:沃伦史蒂文斯 时间:2011/11/28
。记住,有很好的理由不使用匈牙利表示法

1)匈牙利命名法是很久以前发明的人,没有伟大的IDE和编译器我们今天的。我肯定会投入使用。很多人认为这是一个坏主意 - 包括最近由微软出版社(也是微软的员工)的书籍的作者。

2)有些时候最好不要在你的名字,包括类型信息。如果该类型的变化,名称得到误导。我宁愿没有比错误的类型信息的类型信息。试想一下:

LPCTSTR - 的"L"代表"长"长指针 - 但也有没有长远的指针了!

WPARAM - 已经改变大小,但名称仍然是旧的

如果你的名字,这是你的变量,你会刚刚结束,在相同的陷阱

3)"n"是整数 - 但它并不能告诉你,如果"短"或"长",所以它没有多大用处。这一点尤其重要,因为这么多的整数。
4)阅读匈牙利命名法的原始文章:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvsgen/html/hunganotat.asp

下面的文章的示例代码是。看看代码,然后问自己:"是谁写了这个联合国可读的一塌糊涂的人,真是我应该考虑的意见的人吗?"

1#包括"sy.h??BR />2外部INT * rgwDic;
3外部INT bsyMac;
4结构SY * PsySz(CHAR SZ [])
6 {
7 CHAR * PCH;
8 INT CCH;
9结构SY * PSY * PsyCreate()
10 INT * pbsy;
11 INT cwSz;
12无符号wHash = 0;
13 PCH = SZ
14,而(* PCH = 0
15 wHash =(wHash11 * PCH;
16 CCH = PCH - SZ;
17 pbsy = rgbsyHash [(wHash077777)%cwHash]
18(;!* pbsy = 0; pbsy = PSY - > bsyNext)
19 {
20个字符* szSy;
21 szSy =(PSY =(SY *)rgwDic [* pbsy]) - > SZ;
22 PCH = SZ
23,而(* PCH ==* szSy)
24 {
25如果(* PCH == 0)
26返回(PSY);
27}
28}
29 cwSz = 0;
30如果(CCH> = 2)
31 cwSz =(cch-2/sizeof(INT)
32 * pbsy =(INT *)(PSY = PsyCreate(cwSY cwSz))rgwDic;
33 0((INT *)PSY,cwSY);
34 bltbyte(SZ,PSY -> SZ,CCH 1)
35返回(PSY);
36}

评论会员:沃伦史蒂文斯 时间:2011/11/28
喜沃伦

我没看过的文章。
但我刚刚看了您的文章

这是一个写得很好的后沃伦。


Nish

p.s.现在,我想我需要不会感到很内疚和坏没有使用适当的命名系统

我的键盘粉碎机
评论会员:凯文麦克法兰 时间:2011/11/28
谢谢Nish

我对匈牙利命名法咆哮后,我想补充一点,我觉得文章有些地方值得使用。例如,我认为"M_"成员变量和类名前面的"C"是好的想法。我真正的投诉加入变量名的类型信息 - 这是一个坏主意

沃伦
评论会员:贾森杰拉德 时间:2011/11/28
是特定范围主要成员变量/字段艾滋病可读性,匈牙利。

凯文
评论会员:阿尔瓦罗门德斯 时间:2011/11/28
阿..我鄙视的"C"类名前面。这是可怕的。如果我创建了一个分析器类,它被称为解析器,而不是CParser。跆拳道是CParser,我不知道,但我知道一个分析器是什么。资本类的名称命名类时,唯一的好习惯。怎么可能有人不知道它的一类?老实说?

很抱歉,如果我显得咄咄逼人,我只是在世界历史上最长和最乏味的一天。

贾森杰拉德
评论会员:里克纽约 时间:2011/11/28
我同意,但问题是,像类向导的东西鼓励你把一个C类的前面

我已经按照公约是在前面使用一个MFC类的"C",所有的"C"公约后最初由Microsoft。必须在多平台的代码的类没有在他们面前的权证。

的问候,
阿尔瓦罗



永远做正确的。这将取悦一些人,和震惊的休息。 - 马克吐温
评论会员:蒂姆史密斯 时间:2011/11/28
FWIW,Borland公司使用了一个"T"OWL类和许多其他所有的第一个字母。
评论会员:沃伦史蒂文斯 时间:2011/11/28
该代码将不HN不可读。

蒂姆史密斯

我知道你想朋克,你在想什么,他拼写检查本文件?好吧,告诉你真相,我有点忘了自己在这一切兴奋。但这里的CodeProject上,在世界上最强大的论坛,并会打击你的头擦去,你得问自己一个问题,我觉得很幸运?雅好做朋克
评论会员:?蒂姆史密斯 时间:2011/11/28

蒂姆史密斯说:
该代码将不可读没有HN。

该代码是不可读的。时期。

17 pbsy = rgbsyHash [(wHash077777)%cwHash]

沃伦
评论会员:沃伦史蒂文斯 时间:2011/11/28
1。很多人认为这是一件好事,包括人,目前正在写的书和工作为MS。

2。如果你改变了变量的类型,改变符号。但是你的观点,我宁愿至少有变量是什么,而不是一个暗示都没有。

3。 "乔治"不告诉你一个有关变量的"乔治"该死的东西。至少"nGeorge"给你一个提示。

最终,HN是关于宗教超过任何实际证明它是好还是坏。我还没有看到任何证据两种方式。

如果你喜欢它,使用它。如果没有,没有。

蒂姆史密斯

我知道你想朋克,你在想什么,他拼写检查本文件?好吧,告诉你真相,我有点忘了自己在这一切兴奋。但这里的CodeProject上,在世界上最强大的论坛,并会打击你的头擦去,你得问自己一个问题,我觉得很幸运?雅好做朋克
评论会员:?蒂姆史密斯 时间:2011/11/28

蒂姆史密斯说:
最终,HN是关于宗教超过任何实际证明它是好还是坏。

我同意 - 它不应该是一个宗教,或其他方式。我刚刚得到的印象,当我开始编程(所有的书,我读),HN是"正确"的方式做Windows编程。

我是不是特别试图大满贯HN,我只希望其他读者认识到,有些人使用它,有的人不。

沃伦

评论会员:罗杰-阿伦 时间:2011/11/28
我是不是特别想大满贯HN,我只希望其他读者认识到,有些人使用它,有的人不

我可以处理这个问题。

蒂姆史密斯

我知道你想朋克,你在想什么,他拼写检查本文件?好吧,告诉你真相,我有点忘了自己在这一切兴奋。但这里的CodeProject上,在世界上最强大的论坛,并会打击你的头擦去,你得问自己一个问题,我觉得很幸运?做雅朋克
评论会员:?沃伦史蒂文斯 时间:2011/11/28
在一些匈牙利命名法的防御。我在回答您的积分使用它的一个变种自己,所以:

沃伦史蒂文斯写道:
匈牙利命名法是很久以前发明的人,没有伟大的IDE和编译器,我们有今天的
的C / C(计划中的事情),只是因为东西是老doens't意味着其死在水中

沃伦史蒂文斯写道:
有些时候,最好不要在你的名字,包括类型信息。如果该类型的变化,名称得到误导
当发生这种情况,我用查找和替换,什么伟大的IDE的是,不是吗?

沃伦史蒂文斯写道:
LPCTSTR - 的"L"代表"长"长指针 - 但也有没有长远的指针了!

WPARAM - 已经改变大小,但名称仍然是旧的
。确定,theres没有太多我可以说这些,他们比从16位Windows的开展,我想M $的与他们会做,如果他们可以
沃伦史蒂文斯写道:
如果你的名字,这是你的变量,你会刚刚结束,在相同的陷阱
再次,我想查找/替换可以前来救援。
我相信我很久以前读的原文章。你引用的代码是一个坏榜样,怎么不写代码,我想。

匈牙利表示法可以是一件好事。我认为它仅仅归结为个人喜好。就像我刚才说的,我用它的一个变种,但它不是宗教。


罗杰艾伦
Sonork 100.10016

如果我不能呼吸,我死亡或屏住呼吸。
傻瓜jabbers,而一个聪明的人听。但他明智地听取傻瓜?
评论会员:沃伦史蒂文斯 时间:2011/11/28
罗杰艾伦写道:我用查找和替换

查找/替换"只适用于小规模,这是为什么LPCTSTR是会永远有一个L。一旦你共享你的代码,这是为时已晚,做一个查找/替换。试想一下:

1)我们有大量的代码,在多个项目之间共享的工作。
项目,我们目前没有工作,我们不能只走"和"查找/上共享代码替换(而不必做所有的项目上重新测试)。
2)任何你在CodeProject上。如果有人做了一些修改,他们得到你的代码的新版本(他们要插入自己的小修改),他们会做搜索和替换,以及。
罗杰艾伦写道:
就像我刚才说的,我用它的一个变种,但它不是宗教。

我同意 - 它不应该是一个宗教,或其他方式。我刚刚得到的印象,当我开始编程(所有的书,我读),HN是"正确"的方式做Windows编程。我只希望其他读者认识到,有些人使用它,有的人不。


评论会员:yarp 时间:2011/11/28
沃伦史蒂文斯写道:
1)我们有大量的代码,在多个项目之间共享的工作。
项目,我们目前没有工作,我们不能只走"和"查找/上共享代码替换(而不必做所有的项目上重新测试)。
等等,这是疯狂的。你愉快地改变一个变量的类型,是在多个项目中使用的代码,未经检验的项目呢?然而,你会不会做一个全局搜索和替换相同的情况下吗?

你完全错过的SR operaation点。它必须手工完成...那就是,在每个实例停止和检查代码以确保不存在任何问题。然后当然它需要teted ..但是代码检查将捕获的大部分问题。

评论会员:条例草案"Leibold 时间:2011/11/28
吉姆A ・约翰逊写道:
等等,这是疯狂的。你愉快地改变一个变量的类型,是在多个项目中使用的代码,未经检验的项目呢?

不,我同意,那将是相当疯狂

更改类型可能需要更多的测试比更改名称。

我的观点是,只是,当你有很多链接的源代码,一个名称的变化可以变成工作万吨。如果该名称的变化可避免(不必在名称imbeded类型),那么你也许能救自己的一些工作。
评论会员:基督教Graus 时间:2011/11/28
虽然不是完美的,是在匈牙利表示法有很大的优势,它被广泛的传播和理解。当你阅读微软的代码,你立即找到指针,委员,...变量是什么,他们的状态。我总是觉得MS代码容易阅读,全部是显而易见的。
我想你已经尝试解密某人的其​​他代码 - 我的意思是摆脱匈牙利命名法 - 是更好?我还可以给你真正rubish的代码比上面的例子,更糟糕的的 - 我保证
。我宁愿看到匈牙利作为一个全球性的规则,你不是强制性的,适用stricly的符号,像我一样,你可能做,但匈牙利命名法的精神是developper社会共享相同的商标是好的。

Yarp
评论会员:Shog9 时间:2011/11/28
请不同意!

有很多地方是匈牙利命名法是有效的,坦白地说,我不想读一段代码,也没有与开发商谁不符合某种匈牙利命名法。你的例子是比较极端的和不规范使用匈牙利表示法。
每个开发小组添加/删除一些作为标准的匈牙利命名法感知,但它确实有助于理解实现的逻辑。
沃伦史蒂文斯写道:
有些时候,最好不要在你的名字,包括类型信息。如果该类型的变化,名称得到误导。我宁愿不超过类型的信息类型错误的信息。

如果该类型的变化,那么这是一个很好的的理由去改变的变量名。



评论会员:沃伦史蒂文斯 时间:2011/11/28
??更改变量名,如果它是一个一个结构,是在大量的模块使用的成员,这将成为一个巨大的搜索和替换任务,您运行的风险,可能有人会在不同的结构使用相同的成员名称。因此,全球范围内取代"。usCount"与"。ulCount"会导致严重的问题,如果与一个"。usCount"成员的第二个结构,例如,被写入或读取文件或连接到另一个系统的管道。

此外,如果代码是妥善保养源代码控制系统中,检查出,并在所有的模块可以消耗
小时的宝贵的开发时间。

和获得的是什么? Visual Studio现在会告诉你你按住光标移到任何变量或结构成员的类型。如果您使用皮棉工具 - 甚至只是一个好的编译器打开适当的警告 - 你会被警告的危险分配类型强制。
这正是各类计算机都应该为我们做的事情。
除了最初的"P"或"PP"来表示指针和指针的指针,我看没有什么优势。

RGDS
评论会员:基督教Graus 时间:2011/11/28
沃伦史蒂文斯写道:
1)匈牙利命名法是很久以前发明的人,没有伟大的IDE和编译器我们今天的。我肯定会投入使用。很多人认为这是一个坏主意 - 包括最近由微软出版社(也是微软的员工)的书籍的作者。

这证明只有在人M $认为。人人有权享受他们的意见,但我没有看到IDE如何使任何区别。
VC不告诉你没有弗吉尼亚州的一个变量的类型。
沃伦史蒂文斯写道:
有些时候,最好不要在你的名字,包括类型信息。如果该类型的变化,名称得到误导。我宁愿没有比错误的类型信息的类型信息。试想一下:

这里的关键词是设计。是的,wParam是一个明显的例子,但我怀疑我会编写任何代码,跨越边界的WPARAM。

沃伦史蒂文斯写道:
如果你的名字,这是你的变量,你会刚刚结束,在相同的陷阱

一次或两次,我需要做的查找和替换,但是这是非常罕见的。这主要是因为我现在使用的所有数字ñ。

沃伦史蒂文斯写道:
3)"n"是整数 - 但它并不能告诉你,如果"短"或"长",所以它没有多大用处。这一点尤其重要,因为这么多的整数。

这一点是愚蠢的 - 如何使它比没有在所有类型的详细信息差吗?有些人去比'N',无论如何的长度 - 你点是在错误的firection你想说什么

沃伦史蒂文斯写道:
下面的文章的示例代码是。看看代码,然后问自己:"是谁写了这个联合国可读的一塌糊涂的人,真是我应该考虑的意见的人吗?"

我很抱歉,但我不认为这场宗教战争。我确实觉得HN有用的,如果你不,不使用它。你不会得到工作的地方,我的工作虽然。
坚持一个标准,是比标准是什么,更重要的是,和HN在我的经验是非常有用的的。


基督教

网络空间的悲剧 - 这么多,可以旅行,到目前为止,还意味着这么少

"我有点可疑的STL虽然我(测试,实验)计划工作第一次。什么,所有关于??!?!{ BR} - 乔恩Hulatt,22/3/2002
评论会员:安迪史密斯 时间:2011/11/28
基督教Graus写道:
我确实觉得HN有用的,如果你不,不使用它。你不会得到工作的地方,我的工作虽然

不知怎的,我觉得在很多地方,这是真实的的。至于我自己,我从来没有用过的HN,直到我决定找工作的编程。现在,我必须使用它,因为它是该组的我英寸
编码标准的一部分
到一个点,我觉得它是有用的,因为它执行一些最低标准为描述性的变量名(范围,指针)。在比赛的最后阶段,一个懒惰的程序员没有HN将毫无意义的变量名。一个懒惰的程序员与HN,HN前缀(可能是正确的)毫无意义的变量名。糟糕的代码仍然是糟糕的代码没有多少编码标准{五}事

有时候,我只记得,当我年轻的天
现在,没有人记得,当他们年轻和愚蠢的... ADEMA,你喜欢的方式