VB.NET专用字段的命名约定
在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页。