Naming convention for VB.NET private fields在VB.NET中是否有命名私有字段的官方约定? 例如,如果我有一个名为" Foo"的属性,通常我将私有字段称为" _Foo"。 《官方指南》似乎对此不赞成: "不要为字段名使用前缀。例如,不要使用g_或s_来区分静态字段和非静态字段。" 在C#中,您可以调用私有字段'foo',属性'Foo',并在构造函数中将私有字段称为'this.foo'。 由于VB.NET不区分大小写,因此您不能这样做-有什么建议吗? 我仍然在VB中为私有字段使用_前缀,因此我将_foo作为私有字段,并将Foo作为属性。我也为c#和几乎所有我编写的代码执行此操作。通常,我不会太着迷于"什么是正确的方法",因为实际上并没有"正确"的方法(尽管有一些非常糟糕的方法),而是要始终如一地关注它。 归根结底,与使用任何"正确"约定相比,保持一致将使您的代码更具可读性和可维护性。 这是个人喜好,尽管人们普遍支持区分。即使在C#中,我也认为没有一种广泛使用的约定。 杰夫·普罗塞斯说
摘自.NET Framework设计指南第二版第73页。 杰弗里·里希特说
摘自《 .NET Framework设计指南第二版》第47页。Anthony Moore(BCL团队)还认为值得考虑使用" m_"和" s_",第48页。 在VB.NET 4.0中,大多数人可能都知道您不需要为Property声明显式编写getter和setter,如下所示:
VB自动创建称为_Foo和_Foo2的私有成员变量。 似乎Microsoft和VS团队已采用_约定,因此我认为没有问题。 您专门链接的设计指南指出,它们仅适用于静态的公共字段和受保护的字段。设计指南主要侧重于设计公共API。您对私人成员的处理取决于您自己。我不是很肯定,但是我比较有信心,在编译器检查CLS遵从性时不会考虑使用私有成员,因为只有公共/受保护的成员才能在那里参加比赛(想法是,"如果某人使用的语言不允许_字符尝试使用您的库?"如果成员是私有的,答案是"没有,用户不必使用这些成员。"但是,如果成员是公开的,则您会遇到麻烦。 ) 就是说,我要添加回声室,并指出无论您做什么,保持一致都是很重要的。我的雇主要求C#和VB中的私有字段都以_为前缀,并且由于我们所有人都遵循此约定,因此很容易使用其他人编写的代码。 官方准则就是准则。您可以随时绕过它们。话虽这么说,我们通常在C#和VB.NET中都用下划线为字段添加前缀。该约定非常普遍(显然,《官方指南》被忽略了)。 然后可以引用没有" me"关键字的私有字段(" this"关键字用于C#:)
为了澄清和保持一致,我找不到比" _"更好的东西。缺点包括:
我通过在编辑器中将其关闭来解决这些问题,并尽量不要过多考虑CLS遵从性。 我认为没有正式的命名约定,但是我已经看到Microsoft在Microsoft.VisualBasic dll(通过反射器)中使用m_。 我同意最重要的不是一种风格,而是一致的。 话虽如此,专用字段的新MS / .NET样式往往是_fooVar(下划线后跟驼峰名称) 我更喜欢对私人字段使用下划线前缀。我将小写的第一个字母用作方法参数。我遵循为方法使用小写驼峰参数的准则,我认为这比私有字段的命名更为重要,因为它是类API的一部分。 。例如
使用此模式,您在C#或VB.NET中不会与私有字段和构造函数参数发生任何命名冲突。 我同意@lomaxx,在整个团队中保持一致比拥有正确的约定更为重要。 尽管如此,这里还是几个获取编码约定思想和指导的好地方: |