你如何在VB.NET中命名成员变量?

时间:2010-06-09 13:44:01

标签: vb.net naming naming-conventions

我通常不会就变量命名,代码格式化等问题进行主观论证。所以我无意在这里开始论证。

我刚刚看到this(旧)博文,建议为成员变量名添加前缀:

  

使用成员的前缀   变量(_,m_,s_等)。如果你   想要区分本地和   你应该使用的成员变量   “这个。”用C#和“我”。在VB.NET中。

对于C#,是的,我明白了:成员变量可以是较低的camelCase,公共属性/方法可以是PascalCase。但是VB.NET是不区分大小写的,所以你不能给私有成员提供与公共属性相同的名称,除了小写的第一个字母。

我通常使用下划线为成员变量加前缀,但我被告知这不是惯用的。

所以我真的很好奇:你如何在VB.NET中命名你的成员变量?是否有“标准”方式?

我不是在问,因为我认为这是一种“正确”的方式,或者因为我特别想改变自己的风格,当然不是因为我有任何想要告诉别人他们“错误”的意愿。就像我说的那样,我只是好奇。

7 个答案:

答案 0 :(得分:4)

这是个人偏好,尽管人们普遍支持某些区别。即使在C#中,我也不认为有一种广泛使用的惯例。

Jeff Prosise

  

作为个人偏好的问题,我通常在私有字段前加上下划线[在C#中] ......这个约定在.NET框架中使用了很多但是并没有在整个过程中使用。

来自。NET Framework Design Guidelines第2版第73页。

Jeffrey Richter

  

我将所有字段设为私有,并使用“m_”将我的实例字段作为前缀,将我的静态字段添加为“s_”[在C#中]

来自。NET Framework Design Guidelines第2版第47页.Anthony Moore(BCL team)也认为使用“m_”和“s_”值得考虑,第48页。

答案 1 :(得分:3)

我这样做就像你一样。

Private _myVar as Object

Public Property MyVar() As Object
    Get
        Return Me._myVar 
    End Get
    Set(ByVal value As Object)
        Me._myVar = value
    End Set
End Property

在构造函数中

Public Sub New(myVar as object)
   Me._myVar = myVar
End Sub

但我认为这是一个品味问题。

答案 2 :(得分:3)

我个人使用m_作为成员变量。

虽然在VS 2010中使用自动属性,但我不需要为最近编写的任何新代码。

答案 3 :(得分:3)

我不喜欢用下划线开始一个行/名称,因为它总是看起来好像该行被一个额外的空格缩进:它只是使代码不平衡。另外,一个孤独的下划线对我来说太不起眼了:我更喜欢标识符明显不同。

因此,我会定期在后缀下划线(例如example_)和前缀m_之间循环。因为我实际上既不喜欢,也无法决定我喜欢哪一个。但是反对前缀下划线的参数部分也适用于后缀下划线。

但正如您所说,某些的区别是必要的

正如我在其他地方所说的那样,我在C#中仅使用大小写的区别也有非常糟糕的经历 - 它太容易混淆名称,因此写入私有变量而不是属性。如果财产检查或转换设定值,这很重要。

出于这个原因,我更喜欢在C#中使用某种前缀。

答案 4 :(得分:2)

我使用前缀的时间是公共属性的私有后备存储。在这些情况下,名称在其他方面是相同的,并且大多数情况下位置我将引用带有前缀的名称位于其关联属性中。当我最终可以在VB.Net中使用自动实现的属性时,我甚至不需要这样做。

我也是在C#中执行此操作,在那些不能仅使用自动实现的属性的情况下。更好的是_前缀,而不是仅仅根据具体情况改变名称。

答案 5 :(得分:2)

我们使用_(下划线)为变量名称添加前缀。它简短而重要......

Private _ID as integer
Public Property ID() As Integer
    Get
        Return _ID
    End Get
    Set(ByVal value As Integer)
        _ID = value
    End Set
End Property

答案 6 :(得分:1)

虽然很多MS代码似乎都使用m_ *进行私有声明,但我保存了一个字符,只使用_name作为私有成员。我的规则:

  • 私人成员前面有下划线
  • 公共成员(方法和属性)是PascalCase。
  • 参数是camelCase。

由于我在C#中工作,因此具有与具有不同大小写的属性同名的参数名称是没有问题的。但这在VB中不起作用。