在C++类成员名称中使用下划线的惯例

8bi*_*dge 4 c++ class-design

我的大部分编程知识都是自学成才的,所以我从来没有教过适当的设计模式,约定等等.

我最近一直在挖掘我公司的许多软件库,我注意到很多班级数据成员都在他们的名字中有下划线.

例如:

class Image
{
// various things

// data members
char* _data;
ImageSettings* _imageSettings;
// (and so on...)
};
Run Code Online (Sandbox Code Playgroud)

我在很多在线示例代码中都看到了这一点.这个惯例背后有原因吗?对不起,我无法提供更好的例子,我真的想记住我的头脑,但我看到了很多.

我知道匈牙利符号,但我试图掌握用于C++ OOP编程的所有其他约定.

Den*_*ose 5

它只是想明确哪些变量是成员,哪些不是.没有更深层的含义.在实现成员函数时,混淆的可能性较小,您可以选择更简洁的名称.

void Class::SomeFunction() {
    int imageID;
    //...
    SetID(imageID + baseID); //wait, where did baseID come from?
}
Run Code Online (Sandbox Code Playgroud)

就个人而言,我把下划线放在最后而不是开头[如果你意外地跟随一个带有大写字母的前导下划线,你的代码就会形成错误].有些人放mBlahm_Blah.其他人什么都不做,并且this->blah在可能出现混淆时明确地用它来表示他们的成员变量.没有全球标准; 为私人项目做你想做的事,并坚持其他地方的现有做法.