2008-09-30 43 views
4

您可以对类成员,静态对象,全局对象和结构有不同的命名约定。其中的一些例子如下。大范围函数变量的一个好的命名约定是什么?

_member 
m_member 

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

但是有没有传达当一个变量具有完整的功能范围或短的寿命范围内的任何好的技术或功能的变量的作用域的命名约定?

void MyFunction() 
{ 
    int functionScopeVariable; 

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

是的,所以对于你的例子,如果一个var的范围只会在wF/MyFunction()中,我们的约定就是命名你的var l_functionScopeVar ... 我注意到它使它更容易阅读别人的代码w /前缀,即使他们只是本地临时变量... – kafuchau 2008-09-30 15:24:40

回答

0

我们倾向于在我们的“本地”函数中使用l_前缀。而且,这很好。

+0

所以,你的意思是,变量具有函数范围的例子函数参数在他们开始时追加一个“l_” 。只是为了澄清? – Chad 2008-09-30 04:51:42

4

一种方法是遵循指导,变量的范围越大,名称越长。通过这种方式,全局变量可以得到很长的描述性名称,而像循环索引变量这样的受限制范围的事物可以像单个字母一样小。

+0

我自然而然地做到了这一点,直到现在从未发现它。 +1 – 2008-12-22 18:58:25

3

我用全局的,静态的成员变量前缀或特殊的命名约定,所以我没有对当地人使用前缀。我更喜欢使用短局部变量名称,特别是对于循环变量。

0

这真的都归结为任何语言的风格指南,如果有任何建议。

1

还有,你不应该有“大范围的功能”,所以不应该有与命名问题的争论 - 只需使用“小范围功能”变量命名约定。

0

我想任何事情都可以,只要它表达了它的使用意义。

0

我宁愿保持它的简单,我用:

m_varname - Class member variables 
g_varname - Global variables 
+0

是的,我明白了。但是,如果函数变量在if语句中具有完整的函数范围或范围有限, – Chad 2008-09-30 04:52:28

+0

我没有区分它们,我从来没有使用与函数作用域和有限作用域相同的var名称,它往往使事情太混乱。 – KPexEA 2008-09-30 19:24:40

9

我实际上是在鼓励委派这个任务交给你使用IDE /编辑器。

不,我实际上没有谈论命名变量,这仍然是最好的人类完成。但是这种命名策略的基本任务是向您显示任何名称所代表的变量类型。

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

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

1

从MSFT等风格指南为私有实例字段中的指导_memberName(与“_"前缀骆驼符号),这也是最近许多微软教程的源代码中使用的约定。

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

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

我也看到指导说它应该是_MemberName,如果它是名为MemberName的公共属性(Pascal-case notation前缀为“_”)的支持字段我个人不喜欢那样,因为我认为首都M是多余的,增加了不必要的击键,并且不添加任何额外的信息。

0

我使用了我用于类成员的相同约定。 IDE应该照顾你的声明。如果一个函数很大并且令人困惑,那么它就变成了一个箴言,但是有一个问题需要解决。

相关问题