任何人都可以帮助我使用 if then else 语句的控制流替代方案吗?或者推荐一篇好的文章?
据我所知,有些使用映射或枚举。我遇到的麻烦是我有多个条件,即 if (condition1 && condition2 && condition3)...并且我需要对多个排列执行此操作,并且需要验证所有 3 个变量。
请问有人能指出我正确的方向吗?
else if (String.Utils.isNotEmpty(payload.getKeyChange2TokenNumber()) && String.Utils.isEmpty(payload.getKeyChange1TokenNumber()) && String.Utils.isEmpty(payload.getKeyChange3TokenNumber()){
String.format(return value dependant on outcome of validation)
}
所以没有 if then else 语句,我如何实现一个 hashmap 来确定返回什么来代替 if then else 语句返回
谢谢。
最佳答案
因此,很多人最终试图避免使用 if 语句,因为他们觉得“必须有一种更简单、更简洁的方法来做到这一点”。然而从根本上来说,代码只是基本级别的一堆 if 语句。
所以我不会太担心使用它们,因为通过尝试使用 HashMaps 或其他什么,那么你可能只是使用核弹来杀死蚊子。
需要记住的一件事是,您不需要嵌套的 if/else 语句,它确实变得很难检查。
对于您的示例,您提到必须多次对变量进行此检查。那么在流程开始时检查它们是否为空有什么问题呢?如果是则退出或返回相应的结果。然后您就不需要再次进行检查。
此外,使用简短的函数来描述您要执行的操作也很有用。
而不是:
else if (String.Utils.isNotEmpty(payload.getKeyChange2TokenNumber())
&& String.Utils.isEmpty(payload.getKeyChange1TokenNumber())
&& String.Utils.isEmpty(payload.getKeyChange3TokenNumber()) {
String.format(return value dependant on outcome of validation)
}
尝试:
if (notEmpty(payload.getKeyChange2TokenNumber())
&& notEmpty(payload.getKeyChange1TokenNumber())
&& notEmpty(payload.getKeyChange3TokenNumber())) {
String.format(return value dependant on outcome of validation)
}
private boolean notEmpty(String string) {
return StringUtils.isNotEmpty(string);
}
此外,如果上述检查实际上与域相关响应相关,则使用它。例如,假设都检查了 getKeyChange1TokenNumber
、getKeyChange2TokenNumber
、getKeyChange3TokenNumber
以确定是否提供了强制 key 更改 token 编号,如果出现以下情况,则无法继续这不是真的。您的代码将如下所示:
public void main() {
if (mandatoryKeyChangeTokensNotProvided(payload)) {
return "Mandatory Key Change Tokens not provided";
}
...
}
private boolean mandatoryKeyChangeTokensNotProvided(Payload payload) {
return isEmpty(payload.getKeyChange2TokenNumber())
&& isEmpty(payload.getKeyChange1TokenNumber())
&& isEmpty(payload.getKeyChange3TokenNumber());
}
private boolean isEmpty(String string) {
return StringUtils.isEmpty(string);
}
尝试在代码中使用领域语言,这样对开发人员来说更有意义。因此,阅读本文的开发人员会阅读mandatoryKeyChangeTokensProvided方法并知道它的作用。如果他们想知道它是如何做到的,那么只需进入该方法并查看它对它进行字符串空检查即可。希望这能为您解决问题。
您可以通过多种方式执行此操作,但这完全取决于您的域。比如你说这就是验证?拥有一个为您执行所有这些检查的 validator 类有什么问题吗?但请记住 KISS 原则。尽量不要让事情变得过于复杂。
关于java - Java 中 "if then else"语句的 HashMap 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61578485/