我应该将我的全局常量放在.NET库中的哪个位置?

时间:2012-04-19 19:40:49

标签: vb.net constants

我正在使用一个API,它以name = value格式吐出大量数据。起初我通过简单的字符串比较处理了所有内容:

Sub ProcessData(ByVal name As String, ByVal value As String)
    If name = "thisname" Then
        DoThis(value)
    ElseIf name = "thatname" Then
        DoThat(value)
    End If
End Sub

但是有超过20种不同的可能名称要处理,这很快就难以维持。我的下一步是将字符串移动到私有子类中定义的常量:

 Private Class Parameters
     Private Sub New()
     End Sub

     Public Const ThisName As String = "thisname"
     Public Const ThatName As String = "thatname"

 End Class

我的方法看起来像这样:

    Sub ProcessData(ByVal name As String, ByVal value As String)
        If name = Parameters.ThisName Then
            DoThis(value)
        ElseIf name = Parameters.ThatName Then
            DoThat(value)
        End If
    End Sub

这已经是一个巨大的飞跃,但现在我发现自己处于需要能够在其他类中使用这些常量的位置。我对将他们转移到全球课程犹豫不决,但我没有看到另一种选择。

全局常量在哪里?

2 个答案:

答案 0 :(得分:5)

常数应该是私人或朋友。失败模式是它们的值被编译到IL中。因此,如果您为一个程序集创建了一个错误修复程序并更改了一个公共常量,那么使用您更新的程序集的其他程序集仍然使用旧值。非常讨厌的失败模式。

如果需要Public常量值,则应使用ReadOnly关键字。

答案 1 :(得分:4)

这些是常数。这意味着没有人可以改变它们的价值 你应该问问自己这些常数代表什么 如果它们是您的程序中所需的全局信息,则不反对将它们放在全局共享类中 为了更好地理解它们的含义,我将使用XML注释对它们进行评论,然后继续进行编码。