我正在使用一个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
Run Code Online (Sandbox Code Playgroud)
但是有超过20种不同的可能名称需要处理,这很快就难以维护.我的下一步是将字符串移动到私有子类中定义的常量:
Private Class Parameters
Private Sub New()
End Sub
Public Const ThisName As String = "thisname"
Public Const ThatName As String = "thatname"
End Class
Run Code Online (Sandbox Code Playgroud)
我的方法看起来像这样:
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
Run Code Online (Sandbox Code Playgroud)
这已经是一个巨大的飞跃,但现在我发现自己处于一个需要能够在其他类中使用这些常量的位置.我对将它们转移到全球课程犹豫不决,但我没有看到另一种选择.
全局常量在哪里?
常数应该是私人或朋友.失败模式是它们的值被编译到IL中.因此,如果为一个程序集创建错误修复并更改公共常量,则使用更新的程序集的其他程序集仍使用旧值.非常讨厌的失败模式.
如果需要Public常量值,则应使用ReadOnly关键字.