0

在我见过的许多代码示例中,它们以特定方式命名变量。

例如

class obj
{
    int mInt;
}

或者

bool gTexture;

问题。

  1. 为什么他们用这种方式命名它们,而且肯定有更多的方式,我想......
  2. 你如何命名它们,为什么?

谢谢你

4

6 回答 6

1

mInt 中的 m 表示 int 是成员变量,而 gTexture 中的 g 表示变量是全局变量。

这来自匈牙利符号。

http://en.wikipedia.org/wiki/Hungarian_notation

于 2013-06-05T09:17:50.370 回答
0

命名是个人的。为了回答您的第二个问题,我不使用这样的命名约定,而是在类属性后面加上下划线。

公司经常有命名约定。您可能想看看 Google 的命名约定:http: //google-styleguide.googlecode.com/svn/trunk/cppguide.xml#General_Naming_Rules

于 2013-06-05T09:19:13.073 回答
0

为什么他们用这种方式命名它们,而且肯定有更多的方式,我想......

一般很难看懂别人的代码;如果时间足够长,也很难理解您自己的代码。

正因为如此,软件团队制定了约定,以确保他们的团队编写的代码与他们自己编写的代码尽可能相似。

这指的是结构化代码、使用的元素(接口、类、命名空间等)、命名函数和变量、要记录的内容和格式等。

如果正确且一致地完成,它可以显着缩短团队内的代码维护时间。

有一些已知的约定,主要来自用于实现大型代码库和使用的库的约定。

Java倾向于使用camelCaseNotation(以小写字母开头,不使用下划线,每个单词大写)。

MFC 使用匈牙利表示法,其中变量名称以几个字母为前缀,指定数据的范围和类型(m_XXX 表示成员变量,g_XXX 表示全局变量,s_XXX 表示静态变量等)。

特别是匈牙利语的约定可以是正确的(通过使用前缀来表示语义信息)或严重错误(通过使用前缀来表示句法信息)。

(MFC 搞错了。)

ANSI C++(和 std:: 命名空间)倾向于使用small_letters_with_underscores标识符。

还有其他的,大多数软件团队都建立了一个约定,它是其中一个大约定的变体。

你如何命名它们,为什么?

这些天来,我遵循 ANSI C++ 约定,主要是因为我希望我的代码与库代码无缝集成。我也认为它看起来简单而明显(这是非常主观的)。

我很少使用单字母变量(仅在含义明确时)并且更喜欢完整的单词,而不是缩短的单词。

例子:

索引:int index, line_index, col_index;

类名:class recordset; class task_details;

于 2013-06-05T11:19:40.540 回答
0

您给出的示例将“m”用于成员变量,将“g”用于全局变量。这是某些人使用的东西。便于在成员函数中查看(当函数比几行大一点时,所以不能只在函数顶部查看参数名称、局部变量等) ),什么是“局部变量”以及什么会影响“函数外部”。

如果您为公司、学校或开源项目工作,很可能有一个编码标准来说明命名约定是什么。如果这是您的个人项目,请决定您认为适合您的项目。关键是它是一致的。如果不是所有成员变量都以“m”开头,并且并非所有全局变量都以“g”开头,那么在某些地方使用它是毫无意义的——只会给人一种错误的安全感。

于 2013-06-05T09:21:05.793 回答
0

你不必遵循特定的符号,但如果你这样做很酷。

一切都与代码的清晰度有关,没有任何大写字母的变量确实比具有良好合成器的变量更难理解。(在第一个视图中,当您快速查看部分代码时)

对于清晰的代码,我可以推荐谷歌的 C++ 代码规范:http: //google-styleguide.googlecode.com/svn/trunk/cppguide.xml

于 2013-06-05T09:24:26.377 回答
-1
  1. http://en.wikipedia.org/wiki/Hungarian_notation

  2. 不是一个真正的问题。每个人都可以随心所欲地命名它们。不过,您可以阅读这些指南:http: //msdn.microsoft.com/en-us/library/vstudio/ms229045 (v=vs.100).aspx

于 2013-06-05T09:16:36.663 回答