我可以在VB.Net中使用TypeName的camelCase作为变量名吗?

时间:2018-09-17 17:41:28

标签: vb.net

来自C#和JavaScript背景,我习惯于这样的复杂类型的变量声明:

//C# example
var streamWriter = new StreamWriter();

我从公司的另一部分继承了许多VB.Net项目,并且必须维护如下代码:

'VB.Net example
Using SW As New StreamWriter(Path + "\source.txt")
     Dim W As New CsvWriter(SW, ",")
     ' additional code snipped
End Using

出于几个原因,当我向此代码库中添加功能时,我想将这些变量重命名为一种类似于I的样式,其余团队则将其用于C#。因此代码如下:

Using streamWriter As New StreamWriter(Path + "\source.txt")
    Dim csvWriter As New CsvWriter(streamWriter, ",")
    ' additional code snipped
End Using

我知道VB.Net在涉及变量名称时是“不区分大小写的”,因此:

Dim someVariable as String
Dim SomeVariable as String

产生警告,“在当前块中已经声明了局部变量SomeData”。

但是我不知道的是,我像在C#中那样使用类型的camelCase版本作为变量名冒着风险或违反了一些常规约定吗? >

Dim cvsWriter as CvsWriter

CLS遵从性标准或含义中是否暗示我应该或不应该使用此约定?

1 个答案:

答案 0 :(得分:2)

  

CLS遵从性标准或含义中是否暗示我应该或不应该使用此约定?

this guideline

  

尽管有些支持,但不需要CLR上可以运行的语言来支持区分大小写。即使您的语言支持它,其他可能会访问您的框架的语言也不支持。因此,任何可从外部访问的API都不能仅依靠大小写来区分同一上下文中的两个名称。

     

X请勿假定所有编程语言都区分大小写。他们不是。名称不能因大小写而不同。

这里重要的一点是仅根据情况

Using streamWriter As New StreamWriter(Path + "\source.txt")

,两个streamWriter仅因大小写而不同,它们的范围也不同。只要还有其他可以区分名称的内容(例如范围),就不会违反规则。

相反,如果要在C#中声明此枚举:

public enum Wtf
{ 
    yes,
    no,
    Yes,
    No
}

,它可以在C#中运行,但是您将无法从中正确使用它。 VB,因为它在同一个范围内定义了多个名称,这些名称仅因大小写而不同。

(我已经在PayPal API中看到了一个示例。如果不编辑自动生成的包装器代码,就无法在VB中使用它。)

因此,当您声明自己的变量来保存类的实例时,可以在该类的后面命名该变量,可以使用所需的任何大小写,并且不应该破坏任何内容(如果可以,则< em>某些内容不符合CLS)。

您不应该创建一个公开可见的实体,其中否则等于的成员仅根据情况而不同,例如类的两个属性或枚举的两个成员