【问题标题】:looking for option to change switch case to something else寻找将开关盒更改为其他东西的选项
【发布时间】:2023-01-05 23:55:19
【问题描述】:

我有一段代码想更改,我想我可以做得更好,但我不知道该怎么做。 代码应该得到一个选项,并根据他得到的字符串(选项)进行更改(常量的两次更改)。 这是实际的代码:

    public static void setMissingField(String missingField) {
    switch (missingField) {
        case "firstName":
            expectedFirstName = "";
            break;
        case "lastName":
            expectedLastname = "";
            expectedFirstName = "test";
            break;
        case "email":
            expectedWorkEmail = "";
            expectedLastname = "test";
            break;
        case "shortEmail":
            expectedWorkEmail = "12@yes";
            expectedLastname = "test";
            break;
        case "invalidEmail":
            expectedWorkEmail = "asb@@abc.com";
            expectedLastname = "test";
            break;
        case "company":
            expectedCompany = "";
            expectedWorkEmail = "abd@thank.you";
            break;
        case "password":
            expectedPassword = "";
            expectedCompany = "dontAsk";
            break;
        case "shortPassword":
            expectedPassword = "12Aa@";
            expectedCompany = "dontAsk";
            break;
        case "withoutLowerCasePassword":
            expectedPassword = "PASSWORD1@";
            expectedCompany = "dontAsk";
            break;
        case "withoutUpperCasePassword":
            expectedPassword = "password1!";
            expectedCompany = "dontAsk";
            break;
        case "withoutNumberPassword":
            expectedPassword = "Password!";
            expectedCompany = "dontAsk";
            break;
        case "withoutSpecialCharacterPassword":
            expectedPassword = "Password1";
            expectedCompany = "dontAsk";
            break;
        case "confirmationPassword":
            expectedConfirmPassword = "";
            expectedPassword = "Password1@";
            break;
    }
}

它假设改变常量:

public static String expectedFirstName = "test";
public static String expectedLastname = "test";
public static String expectedWorkEmail = "abd@thank.you";
public static String expectedCompany = "dontAsk";
public static String expectedPassword = "Password1@";
public static String expectedConfirmPassword = "Password1@";

我想也许可以使用 Map 但即使它是 if 语句(在选项本身上)并且在它之后放在键值上,但这对我来说是一样的,所以有什么好主意吗?

【问题讨论】:

  • 我看不出有什么办法可以“更好”地做到这一点;如果您有多个条件可以分支,则 switch 是常规的(优于嵌套的 if 语句)。地图只是一个结构,如果需要,您仍然需要一些逻辑来从中提取值。
  • 谢谢,即使是Map,它也会是两张地图,一张用来比较地图中的misssingField,另一张地图是改变预期的值..所以没有别的办法吗?

标签: java


【解决方案1】:

在您描述的用例中,switch 语句是更可取的方法。 特别是对于超过 3 个不同的可能分支,您应该将多个 if 语句转换为 switch 语句。所以你已经在遵循这个约定了。

Map 只是一种不同的数据结构。我没有看到在这个用例中使用一个的任何好处。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-24
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    相关资源
    最近更新 更多