Use*_*er1 10 c++ mfc hungarian-notation visual-c++
MFC具有以C开头的所有类名.例如,CFile和CGdiObject.有没有人看过它在别处使用过?是否有Microsoft的官方命名约定指南推荐此样式?这个想法是源于MFC还是其他项目?
Ear*_*rlz 17
这是邪恶的.除了抽象的东西之外,不要使用匈牙利表示法.
例如,btnSubmit可以描述一个名为Submit的按钮(它可以附带lblSubmit按钮旁边的标签)
但类似于CMyClassClass和uiCount无符号整数命名计数的东西对程序员没有帮助,只会导致额外的浪费.
Ste*_*sop 15
在Symbian C++中使用了类似的东西,其惯例是:
T类是"值",例如TChar,TInt32,TDes
R类是内核(或其他)资源的句柄,例如RFile,RSocket
M类是mixins,其包括接口(被解释为没有函数实现的mixins).指南是多重继承最多应包含1个非M类.
C类几乎是其他所有东西,并且来自CBase,它有一些东西可以帮助处理资源.
HBufC主要用于在Symbian论坛上生成混乱的帖子,并且拥有自己的前缀只是一个开始.H代表"嗯?",或者可能是"Haw,haw!你没有STL!" ;-)
这与Apps Hungarian Notation而不是系统匈牙利表示法的精神非常接近.前缀告诉你一些关于你可以在文档中查找的类,但你不会知道.在编程中命名任何东西的重点是提供这样的提示和提醒,否则你只需要调用你的类"Class001","Class002"等.
系统匈牙利语只是告诉你一个变量的类型,IMO没什么好兴奋的,特别是在像C++这样的语言中,类型往往不断重复或者完全被模板参数隐藏.在命名类型时,它的模拟是用I命名所有接口的Java实践.再一次,我对此并不感到兴奋(标准Java库也没有),但是如果你要为每个类定义一个接口,除了在非测试情况下实际用于多态的接口之外,还需要一些方法来区分这两者.
Mik*_*ney 13
这是一种旧的C++编码风格,MFC可能是最后使用它的东西之一.
它通常只是C++的惯例(也许还有其他几种语言),因此随着语言通过COM和.NET变得更具互操作性,它开始失宠.
你仍然会看到它的表兄,接口的"I"前缀,经常.我总是觉得有趣的是"I"在"C"死亡时幸存下来,但这可能是因为接口在COM互操作性中被大量使用.
多年前,命名约定对于帮助识别类,甚至类的分组类型至关重要.不要忘记当时没有名称空间,也没有/有限的intellisense可用.C是匈牙利符号的一种形式,但肯定受到MFC的欢迎.Borland和Delphi使用T - 作为Type的前缀
虽然MFC和许多为Windows编写的软件使用类的"C"约定,但通常在为UNIX平台编写的软件中找不到后者.我认为这是Visual C++非常强烈鼓励的习惯.我记得Visual C++ 6.0会为使用类向导创建的任何类添加前缀"C".