4

我不是 IT 专业人士,如果我遗漏了一些明显的东西,我深表歉意。

在编写程序时,我添加了一个SettingsIni读取键和值的文本文件的类。我发现这种方法非常灵活,因为可以在不更改任何代码的情况下添加或更改设置,无论我将它附加到什么应用程序。这是主要代码。

Public Shared Sub Load()

    Using settingsReader As StreamReader = New StreamReader(System.AppDomain.CurrentDomain.BaseDirectory & "settings.ini")
        Do While settingsReader.Peek > -1
            Dim line As String = settingsReader.ReadLine
            Dim keysAndValues() As String = line.Split("="c)  
            settingsTable.Add(keysAndValues(0).Trim, keysAndValues(1).Trim)

            Loop
    End Using
End Sub


Public Shared Function GetValue(ByVal key As String)
    Dim value As String = settingsTable(key)
    Return value
End Function

这允许您通过调用该SettingsIni.GetValue方法在代码中使用设置。

例如:

watcher = New FileSystemWatcher(SettingsIni.GetValue("inputDir"), "*" & SettingsIni.GetValue("extn")).

我发现这使我的代码易于阅读。我的问题是在这种情况下的值inputDirextn, 是徒手输入的,而不是由智能感知检查。我总是担心我可能会在应用程序的不常用分支中打错字并在测试期间错过它。是否有检索设置的最佳实践方法?或绕过这些未经检查的徒手输入值的方法?

4

4 回答 4

0

如果它是一个数字,你可以做这三件事:

  1. 检查是否为数字 - 使用 IsNumeric 函数
  2. 检查它是否是整数 - 使用 Int 函数,例如: if Int(number)=number
  3. 检查有效范围,例如:if number>=lowerbound 和 number<=upperbound
于 2013-01-03T21:24:31.127 回答
0

我假设您使用的是 VB.NET?如果是这样,“我的项目”下有方便的“设置”菜单。它提供了一种存储程序设置并通过“my.settings.YOURKEY”检索它们的方法。优点是,类型安全性在此级别上强制执行。此外,您还可以以几乎相同的方式存储“资源” - 但资源更适合字符串/图片等。但如果您想翻译您的程序,它们会特别好。

至于您当前的问题:将路径存储在设置中,这样您就不需要立即更改所有代码,但您可以使用您的系统并且永远不会拼错任何东西。

于 2013-01-03T21:26:06.467 回答
0

这完全取决于你。您是检查引号内几乎所有内容的人,而不是智能感知。

但是您仍然使用Try-Catch块:

Try
  Dim value As String = settingsTable(key)
  Return value
Catch ex As Exception
  MsgBox(ex.ToString)
  Return ""
End Try

因此,如果您尝试访问您可能输入错误的不存在设置,您将收到一个消息框。

于 2013-01-03T21:31:07.600 回答
0

您的代码示例的最佳做法是将常量用于可能的设置。

Class Settings
    Const inputDir as String = "inputDir"
    Const extn as String = "extn"
End Class


watcher = New FileSystemWatcher(SettingsIni.GetValue(Settings.inputDir), "*" & SettingsIni.GetValue(Settings.extn))
于 2013-01-03T22:46:28.367 回答