【发布时间】:2009-08-28 15:01:21
【问题描述】:
在最近的一个 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()
* 我发现的唯一问题是,有时“重命名”重构工具会混淆,即在重命名类时,它也会在声明行中重命名与类同名的变量 (@987654324 @),但不是对该变量的其他引用,导致编译器问题(duh)。不过,这些总是很容易纠正。
另一个小烦恼是 VB.NET 语法高亮显示类名与变量名没有任何不同,这使得它不如在 C# 中使用它时那么好。我仍然发现代码非常可读。
有没有其他人尝试在团队环境中允许这样做? VB.NET 中的这种命名约定是否还有其他潜在问题?
【问题讨论】:
-
这就是我不喜欢 VB.NET 的原因之一:在 C# 中 Foo 和 foo 显然是不同的标识符,在 VB 中它会变得混乱......
-
这是我不喜欢 C# 的原因之一。 Thomas Levesque 和 THOMAS LEVESQUE 和 thomas levesque 是不同的人吗?
-
不,但幸运的是,C# 代码并不打算直接放在电话簿中。
-
@Kyralessa:好点;)。我想这只是个人喜好问题......
-
好吧,感谢大家对此的贡献,我对在 VB.NET 中使用这种命名约定的利弊(主要是弊端)有了更多的了解......我'我在下面的摘要回答中发布了指向 Microsoft 主要文章的链接:stackoverflow.com/questions/1347569/… 我很想知道是否有人认为他们知道编写漂亮的 VB.NET 变量名称的一种真正方法。祝大家好运
标签: c# vb.net coding-style case-sensitive case-insensitive