如何减少if-else语句的数量例如,避免对值进行硬编码?

问题描述

如何在不对每个Jar版本进行硬编码的情况下执行此操作? 因此,在每个ElseIf中,它都会检查版本(例如1.2.5)是否为该版本,然后相应地将软件下载到用户+ \ + type + _ + 版本 + .jar。问题是有更多版本(我认为超过30个),我不想对所有版本进行硬编码。

If JarVer = "1.2.1" Or JarVer = "1.2.2" Or JarVer = "1.2.3" Or JarVer = "1.2.4" Then
                My.Computer.Network.DownloadFile(
                "https://assets.minecraft.net/1_2/minecraft_server.jar",Path + "\" + SW + "_" + JarVer + ".jar")
            ElseIf JarVer = "1.2.5" Then
                My.Computer.Network.DownloadFile(
                "https://assets.minecraft.net/1_2_5/minecraft_server.jar",Path + "\" + SW + "_" + JarVer + ".jar")
            ElseIf JarVer = "1.3.1" Then
                My.Computer.Network.DownloadFile(
                "https://launcher.mojang.com/v1/objects/d8321edc9470e56b8ad5c67bbd16beba25843336/server.jar",Path + "\" + SW + "_" + JarVer + ".jar")
            ElseIf JarVer = "1.3.2" Then
                My.Computer.Network.DownloadFile(
                "https://launcher.mojang.com/v1/objects/82563ce498bfc1fc8a2cb5bf236f7da86a390646/server.jar",Path + "\" + SW + "_" + JarVer + ".jar")
            ElseIf JarVer = "1.4.2" Then
                My.Computer.Network.DownloadFile(
                "https://launcher.mojang.com/v1/objects/3de2ae6c488135596e073a9589842800c9f53bfe/server.jar",Path + "\" + SW + "_" + JarVer + ".jar")
            ...

解决方法

除非您具有一致的模式,否则它们必须在某个地方进行硬编码。

我会考虑将列表放在数据表或字典中,然后从版本中查找网址。