VB.NET专用字段的命名约定

时间:2020-03-05 18:38:55  来源:igfitidea点击:

在VB.NET中命名私有字段是否有官方约定?例如,如果我有一个名为" Foo"的属性,那么通常我将私有字段称为" _Foo"。 《官方指南》似乎对此不赞成:

"不要为字段名使用前缀。例如,不要使用g_或者s_来区分静态字段和非静态字段。"

在C#中,我们可以调用私有字段'foo',属性'Foo',并在构造函数中将私有字段称为'this.foo'。由于VB.NET不区分大小写,因此我们不能提出任何建议吗?

解决方案

回答

我仍然在VB中为私有字段使用_前缀,因此我将_foo作为私有字段,将Foo作为属性。我为cas编写的几乎所有代码都做得很好。通常,我不会太着迷于"什么是正确的方法",因为实际上并没有"正确"的方法(尽管有一些非常糟糕的方法),而是要始终如一地关注它。

归根结底,与使用任何"正确"约定相比,保持一致将使代码更具可读性和可维护性。

回答

官方指南就是这些指南。我们可以随时绕开它们。话虽这么说,我们通常在两个Cand VB.NET中用下划线为字段添加前缀。该约定非常普遍(显然,《官方指南》被忽略了)。

然后可以引用没有" me"关键字的私有字段(" this"关键字用于C :)

回答

我认为没有正式的命名约定,但是我已经看到Microsoft在Microsoft.VisualBasic dll(通过反射器)中使用m_。

回答

我同意@lomaxx,在整个团队中保持一致比拥有正确的约定更为重要。

尽管如此,这里还是几个获取编码约定思想和指导的好地方:

  • Francesco Balena撰写的Microsoft Visual Basic和Visual C#开发人员的实用指南和最佳实践是一本很好的书,它解决了许多这些问题。
  • IDesign编码标准(用于C#和WCF)
  • .NET Framework源代码(在VS2008中)

回答

我更喜欢对私人字段使用下划线前缀。我将小写的第一个字母用作方法参数。我遵循为方法使用小写驼峰参数的准则,我认为这比私有字段的命名更为重要,因为它是类API的一部分。 。例如

Public Class Class1

    Private _foo As String
    Public Property Foo() As String
        Get
            Return _foo
        End Get
        Set(ByVal value As String)
            _foo = value
        End Set
    End Property

    Public Sub New(ByVal foo As String)
        _foo = foo
    End Sub

End Class

使用此模式,我们在Cor VB.NET中不会与私有字段和构造函数参数发生任何命名冲突。

回答

I still use the _ prefix in VB for
  private fields, so I'll have _foo as
  the private field and Foo as the
  property. I do this for c# as well and
  pretty much any code I write.
  Generally I wouldn't get too caught up
  in "what is the right way to do it"
  because there isn't really a "right"
  way (altho there are some very bad
  ways) but rather be concerned with
  doing it consistently.

为了弄清楚和保持一致,我没有找到比" _"更好的东西了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。缺点包括:

  • 不符合CLS
  • 当VB在我的IDE上绘制水平线时,容易迷路

我通过在编辑器中将其关闭来解决这些问题,并尽量不要过多考虑CLS遵从性。

回答

我们链接的设计准则明确指出,它们仅适用于静态的公共字段和受保护的字段。设计指南主要侧重于设计公共API。我们对私人成员的处理取决于我们自己。我不是很肯定,但是我比较有信心,在编译器检查CLS遵从性时不会考虑使用私有成员,因为只有公共/受保护的成员才能在那里参加比赛(想法是,"如果某人使用的语言不允许_字符尝试使用库?"如果成员是私有的,答案是"没有,用户不必使用这些成员。"但是,如果成员是公开的,则我们会遇到麻烦。 )

就是说,我要添加回声室,并指出无论我们做什么,保持一致很重要。我的雇主要求两个Cand VB中的私有字段都以_为前缀,并且由于我们所有人都遵循此约定,因此很容易使用其他人编写的代码。

回答

我同意最重要的不是一种风格,而是一致的。

话虽如此,用于私有字段的新MS / .NET样式往往是_fooVar(下划线后跟驼峰名称)

回答

这是个人喜好,尽管人们普遍支持区分。即使在CI中,也不要认为有一种广泛使用的约定。

杰夫·普罗塞斯说

As a matter of personal preference I typically prefix private fields with an underscore [in C#] ... This convention is used quite a lot in the .NET framework but it is not used throughout.

.NET Framework设计指南第二版,第73页。

杰弗里·里希特说

I make all my fields private and I prefix my instance fields with "m_" and my static fields with "s_" [in C#]

摘自《 .NET Framework设计指南第二版》第47页。Anthony Moore(BCL团队)也认为使用" m_"和" s_"值得考虑,第48页。