4

您可以对类成员、静态对象、全局对象和结构有不同的命名约定。其中一些示例如下。

_member
m_member

或者在 Java 的情况下,使用this.member.

但是对于函数变量范围是否有任何好的技术或命名约定来传达单个变量具有完整的函数范围或短的生命周期范围?

void MyFunction()
{
  int functionScopeVariable;

  if(true)
  {
    //no need for function variable scope naming convention
  }
}
4

10 回答 10

9

我实际上鼓励将此任务委托给您使用的 IDE/编辑器。

不,我实际上并不是在谈论命名变量,这仍然最好由人类完成。但是这种命名策略的基本任务是向您展示任何一个名称代表哪种类型的变量。

几乎每个值得一提的 IDE 都可以为不同的变量类型(实例成员、静态成员、参数、局部变量……)定义不同的样式(颜色、字体、字体类型……),所以让 IDE 告诉你什么变量的类型实际上使您不必每次都键入那些(否则无用的)前缀或后缀。

所以我的建议:使用没有任何前缀或后缀的有意义的名称。

于 2008-12-22T19:00:39.643 回答
4

一种方法是遵循变量范围越大,名称越长的准则。通过这种方式,全局变量获得了长描述性的名称,而像循环索引变量这样的范围有限的东西可以小到单个字母。

于 2008-09-30T03:03:41.517 回答
3

我对全局变量、静态变量和成员变量使用前缀或特殊命名约定,因此我不必在本地变量上使用前缀。我更喜欢使用短的局部变量名,特别是对于循环变量。

于 2008-09-30T03:05:12.310 回答
1

有一个论点是你不应该有“大范围函数”,所以命名不应该有问题 - 只需使用“小范围函数”变量命名约定。

于 2008-09-30T03:25:20.733 回答
1

MSFT 和其他私有实例字段样式指南的指南是_memberName(以“ 为前缀的驼峰式表示法” _")。这也是最近许多 Microsoft 教程的源代码中使用的约定。

我使用它是因为它更短,而不是匈牙利语,并且 R# 支持它作为私有实例字段的默认规则。

我也喜欢它,因为它在某种程度上掩盖了 Intellisense 的私有字段,因为您应该更喜欢首先访问您的公共成员。如果我想访问属性名称并开始输入“ Na”,第一个建议是使用 Pascal 大小写的公共实例属性名称。在极少数情况下,我想直接访问私有字段,这迫使我有意识地决定开始输入“ _”,然后我会在 Intellisense 弹出窗口中获得我的私有字段的完整列表。

我还看到指导说它应该是 _MemberName 如果它是名为 MemberName 的公共属性的支持字段(以“ _”为前缀的 Pascal 大小写表示法)我个人不喜欢这样,因为我认为大写 M 是多余的,补充说不必要的击键,并且不会添加任何额外的信息。

于 2010-07-19T15:51:30.103 回答
0

我们倾向于在函数中使用 l_ 前缀来表示“本地”。而且,效果很好。

于 2008-09-30T03:01:55.360 回答
0

实际上,这一切都归结为语言的风格指南是否有任何建议。

于 2008-09-30T03:11:08.927 回答
0

我想任何事情都可以,只要它传达了有关其使用的含义。

于 2008-09-30T03:35:58.430 回答
0

我更喜欢保持简单,我使用:

 m_varname - Class member variables
 g_varname - Global variables
于 2008-09-30T03:52:31.213 回答
0

我使用与班级成员相同的约定。IDE 应该负责查找您的声明。如果一个函数如此庞大和令人困惑以至于它成为一个问题,那么需要解决一个更大的问题。

于 2010-07-19T16:07:10.253 回答