我经常在教程、示例和其他与游戏开发相关的代码中看到m_前缀用于变量(m_World、m_Sprites等)。

为什么人们在变量前加前缀m_ ?


当前回答

这是定义成员变量的典型编程实践。因此,当您以后使用它们时,不需要看到它们的定义位置就可以知道它们的作用域。如果你已经知道作用域,并且你正在使用智能感知之类的东西,这也很好,你可以从m_开始,然后显示所有成员变量的列表。匈牙利符号的一部分,请看这里例子中关于范围的部分。

其他回答

我还没有看到的一个参数是,像m_这样的前缀可以用来防止与#define'd宏的名称冲突。

在/usr/include/term.h查找curses/ncurses中的#define [a-z][A-Za-z0-9_]*[^(]

这是定义成员变量的典型编程实践。因此,当您以后使用它们时,不需要看到它们的定义位置就可以知道它们的作用域。如果你已经知道作用域,并且你正在使用智能感知之类的东西,这也很好,你可以从m_开始,然后显示所有成员变量的列表。匈牙利符号的一部分,请看这里例子中关于范围的部分。

m_前缀通常用于成员变量——我认为它的主要优点是有助于明确区分公共属性和支持它的私有成员变量:

int m_something

public int Something => this.m_something; 

对于备份变量有一个一致的命名约定是有帮助的,m_前缀是一种实现方式——在不区分大小写的语言中是有效的。

这有多有用取决于你所使用的语言和工具。具有强大的重构工具和智能感知功能的现代ide不太需要这样的约定,而且这当然不是做到这一点的唯一方法,但在任何情况下都值得注意这种实践。

还有人提到它的意思是一个阶级成员。Qt是一个流行的c++框架,它使用了这个符号,所以很多c++ GUI教程都使用m_。你可以看到他们几乎所有的例子都使用m_作为类成员。就我个人而言,我使用m_,因为它比这个->短,感觉紧凑。

正如在其他答案中所述,m_ prefix用于表示变量是类成员。这与匈牙利符号不同,因为它没有指出变量的类型,而是它的上下文。

我在c++中使用m_,但在其他一些必须使用“this”或“self”的语言中不使用。我不喜欢看到'this->'与c++一起使用,因为它会使代码混乱。

另一个答案说m_dsc是“坏做法”和“description;”是“好做法”,但这是一个转移注意力的问题,因为这里的问题是缩写。

另一个答案是,输入这个会弹出智能提示,但任何好的IDE都会有一个热键来弹出当前类成员的智能提示。