【发布时间】: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