在最近的一个 VB.NET 项目中,我采用了我在 C# 中习惯使用的命名约定。即,经常调用与其引用的类同名的变量,只是大小写不同,例如
Foo foo = new Foo(); // C#
Dim foo As New Foo() ' VB.NET
我发现这通常是编写代码最清晰的方法,尤其是对于小方法。这种编码风格在 C# 中显然可以正常工作,区分大小写,并且由于 Visual Studio 提供的语法突出显示,很容易看出类名和变量名不同。
然而,令我惊讶的是,这在 VB.NET 中几乎 100% 的时间*都可以正常工作。唯一的问题是变量名似乎具有多重身份。也就是说,它可以用于调用 Foo 类的实例方法和共享(静态)方法。但这并没有真正引起任何问题,它只是意味着 Intellisense 会在您点击“。”后提供一个包含静态方法和实例方法的列表。在变量名之后。
我再次惊讶地发现,这实际上并没有导致我的项目出现任何混乱,而且到目前为止它非常成功!然而,我是唯一一个从事这个特定项目的人。
这是一个稍长的例子:
Dim collection as Collection = New Collection()
For Each bar As Bar in Bar.All()
collection.SomeInstanceMethod(bar)
Next
collection.SomeSharedMethod()
* 我发现的唯一问题是,有时“重命名”重构工具会混淆,即在重命名类时,它也会在声明行 ( Dim foo As...
) 中重命名与类同名的变量,但不是对该变量的其他引用,导致编译器问题(duh)。不过,这些总是很容易纠正。
另一个小烦恼是 VB.NET 语法高亮显示类名与变量名没有任何不同,这使得它不如在 C# 中使用它时那么好。我仍然发现代码非常可读。
有没有其他人尝试在团队环境中允许这样做?VB.NET 中的这种命名约定还有其他潜在问题吗?