CString变量名前缀

时间:2010-08-11 18:40:25

标签: c++

你可以轻松回答问题:

CString变量名的接受(假设有一个......)前缀是什么?为了澄清,我已经看到了以下其他数据类型:

int  iIndex;  //integer
int* pIndex;  //pointer
bool fFlag;   //bool flag

还有无数其他人。如果这真的是一个非问题或“无论你想要什么”的答案,请随时告诉我。

4 个答案:

答案 0 :(得分:4)

没有。永远不要为变量添加类型前缀。有关正确使用前缀的信息,请参阅Making Wrong Code Look Wrong

答案 1 :(得分:3)

这些前缀是滥用匈牙利表示法的概念。

HN的想法是变量以代码为前缀描述其使用。例如,保存某事物数量的变量将加前缀cnt;包含索引的变量将以inx作为前缀。持有标志的变量将以f为前缀。保存数字的变量(不是计数或索引或其他常见的变量)将以n作为前缀。

然而,很快人们变得很懒,(主要是由于最后一个例子),前缀开始只是数据类型的指示。这在C中有一些用处,其中变量的声明必须位于函数的顶部,可能与使用它的位置有一定距离。 (特别是当代码是用简单的文本编辑器编写的时候)

但是,最终,我们获得了更多类型安全的语言和更好的IDE,因此虚假的匈牙利表示法因为不必要和蔑视。

答案 2 :(得分:1)

变量名中没有标记符号。事实上,有了更好的开发环境(使用intellisense等),这是非常不必要的。

答案 3 :(得分:1)

我看过“s”用过了。示例:sIndexname。

我使用“m”表示数据成员:mIndex,“p”表示指向数据成员的指针:mpIndex。我只将它们用于类范围变量。就是这样。

到今天的“标准”甚至是推动它。 AFAIK,除了一些微软顽固分子匈牙利表示法已经死了。当我看到它用于局部变量时,我特别感到好笑。乐趣。

出于某种原因,我被“m_”公约击退了。这只是丑陋的,imo。 : - )