命名变量

C++ Naming variables

本文关键字:变量      更新时间:2023-10-16

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

class obj
{
    int mInt;
}

bool gTexture;

问题。

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

谢谢

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

这来自匈牙利符号。

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

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

公司通常有命名约定。您可能需要查看一下Google的命名约定:http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#General_Naming_Rules

您给出的示例使用'm'表示成员变量,'g'表示全局变量。这是一些人使用的东西。这使得在成员函数中很容易看到(当函数比几行大一点时,所以你不能只在函数的顶部查看参数,局部变量等的名称),什么是"局部变量"以及什么影响"函数外部"。

如果你在一家公司、一所学校或一个开源项目中工作,很可能会有一个编码标准告诉你命名约定是什么。如果这是你的个人项目,那就选择一些你认为适合你的项目。重点是它是一致的。如果不是所有成员变量都以"m"开头,也不是所有全局变量都以"g"开头,那么在某些地方使用它是毫无意义的——只会给人一种错误的安全感。

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

一切都是关于代码的清晰度,一个没有大写的变量确实比一个有良好语法的变量更难以理解。(在第一个视图中,当您快速查看代码的一部分时)

为了清晰的代码,我可以推荐google的c++代码规范:http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml

为什么他们用这种方式命名,我认为肯定有更多的方法…

一般来说,很难理解别人的代码;如果过了足够的时间,你就很难理解自己的代码了。

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

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

如果做得正确和一致,它对缩短团队中的代码维护时间有显著的影响。

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

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

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

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

(MFC大错特错了)

ANSI c++(和std:: namespace)倾向于使用small_letters_with_underscores作为标识符。

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

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

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

我很少使用一个字母的变量(只有当意思清楚时),我更喜欢完整的单词,而不是缩写的。

例子:

索引:int index, line_index, col_index;

类名:class recordset; class task_details;

    http://en.wikipedia.org/wiki/Hungarian_notation
  1. 不是一个真正的问题。每个人都想给他们起什么名字。您可以阅读这些指南:http://msdn.microsoft.com/en-us/library/vstudio/ms229045(v=vs.100).aspx