gpt4 book ai didi

java - 需要嵌套条件的设计建议

转载 作者:搜寻专家 更新时间:2023-10-31 20:09:11 26 4
gpt4 key购买 nike

我需要在一组具有许多 if else 条件的规则中编写具有许多条件(最多 30 个条件)的逻辑,它可以在所有条件之间或之后结束。

这是我在一些可能的情况下尝试过的示例代码。这给了我结果,但看起来不太好,并且在一种情况下任何轻微的失误都需要永远跟踪。

到目前为止我尝试的是,取出常见条件并重构为一些方法。尝试创建具有条件的接口(interface),各种 set 将实现它。

如果您有任何设计建议,请帮助我。不是在寻找详细的解决方案,但即使是提示也会很棒。

private Boolean RunCondition(Input input) {
Boolean ret=false;
//First if
if(input.a.equals("v1")){
//Somelogic1();
//Second if
if(input.b.equals("v2"))
//Third if
if(input.c >1)
//Fourth if
//Somelogic2();
//Go fetch key Z1 from database and see if d matches.
if(input.d.equals("Z1"))
System.out.println("Passed 1");
// Fourth Else
else{
System.out.println("Failed at fourth");
}

//Third Else
else{
if(input.aa.equals("v2"))
System.out.println("Failed at third");
}
//Second Else
else{
if(input.bb.equals("v2"))
System.out.println("Failed at second");
}
}
//First Else
else{
if(input.cc.equals("v2"))
System.out.println("Failed aat first");
}

return ret;
}

public class Input {
String a;
String b;
int c;
String d;
String e;
String aa;
String bb;
String cc;
String dd;
String ee;

}

最佳答案

流程很复杂,因为您有一个正常的流程,加上当某些值异常(例如无效)时许多可能的异常流程。

这是使用 try/catch/finally block 处理的完美候选对象。

您的程序可以重写为:

private Boolean RunCondition(Input input) {
Boolean ret=false;
try {
//First if
if(!input.a.equals("v1")) {
throw new ValidationException("Failed aat first");
}
//Somelogic1();

//Second if
if(!input.b.equals("v2")) {
throw new ValidationException("Failed at second");
}
//Somelogic2()

//Third if
if(input.c<=1) {
throw new ValidationException("Failed at third");
}

//Fourth if
//Somelogic2();
//Go fetch key Z1 from database and see if d matches.
if(!input.d.equals("Z1")) {
throw new ValidationException("Failed at fourth");
}
System.out.println("Passed 1");

} catch (ValidationException e) {
System.out.println(e.getMessage());
}

return ret;
}

您可以在其中定义自己的 ValidationException(如下所示),或者您可以重用一些现有的标准异常,例如 RuntimeException

class ValidationException extends RuntimeException {

public ValidationException(String arg0) {
super(arg0);
// TODO Auto-generated constructor stub
}

/**
*
*/
private static final long serialVersionUID = 1L;

}

你可以阅读更多相关内容

https://docs.oracle.com/javase/tutorial/essential/exceptions/index.html

关于java - 需要嵌套条件的设计建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41750174/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com