MFC具有所有以C开头的类名称。例如,CFile和CGdiObject。有没有人看到它在其他地方使用过?是否有来自Microsoft的官方命名约定指南推荐这种样式?这个想法是源自MFC还是其他项目?
最佳答案
Symbian C++使用了一些类似的约定,约定是:
T类是“值”,例如TChar,TInt32,TDes
R类是内核(或其他)资源的句柄,例如RFile,RSocket
M类是mixin,其中包括接口(interface)(解释为没有功能实现的mixin)。指导原则是多重继承最多应涉及1个非M类。
C类几乎是其他所有东西,它们都源自CBase,CBase中包含一些有助于处理资源的内容。
HBufC的存在主要是为了在Symbian论坛上生成困惑的帖子,而拥有自己的前缀只是开始。 H代表“嗯?”,或者可能代表“H,哇!您没有STL!”。 ;-)
从本质上讲,这与Apps Hungarian表示法而不是Systems Hungarian表示法密切相关。前缀告诉您有关类的信息,您可以在文档中查找该类,否则就不会知道。在编程中命名任何东西的全部目的是提供这样的提示和提醒,否则,您只需将您的类称为“Class001”,“Class002”等。
Systems Hungarian只是告诉您变量的类型,对于IMO而言,这没什么好激动的,尤其是在像C++这样的语言中,类型往往会不断重复或完全被模板参数隐藏。在命名类型时,类似的做法是使用I命名所有接口(interface)的Java实践。同样,我对此并不感到兴奋(标准Java库也没有),但是如果您要为每个类定义一个接口(interface), ,除了在非测试情况下实际用于多态的接口(interface)之外,您还需要一些方法来区分两者。