gpt4 book ai didi

java - 执行函数时避免连续的 "if (...)"检查

转载 作者:行者123 更新时间:2023-12-04 04:28:14 30 4
gpt4 key购买 nike

我有一个如下所示的函数:

public Status execute() {

Status status = doSomething();

if (status != Status.ABORTED) {
status = doSomethingElse();
}

if (status != Status.ABORTED) {
status = doAgainSomethingElse(param1, param2);
}

if (status != Status.ABORTED) {
doSomethingWhichDoesntReturn(param3);
}

//etc.

return status;
}
所以基本上这个函数需要返回一个 Status .这由第一个函数计算,然后由后续函数在执行这些函数时重新计算, status != Status.ABORTED .
我想重构这段代码,但我没有任何有效的想法。
如果一直是 status = someFunction(someParam) ,我会使用 Function<TypeInput, Status> 的列表并在循环中执行该列表:
List<Function<TypeInput, Status>> actions = List.of(function1, function2...);
for (Function<TypeInput, Status> f : actions) {
if (status != Status.ABORTED) {
status = f.apply(input);
}
}
但问题是每个 Action 可能不同(有时它是一个返回 Status 的函数,有时有参数但并不总是相同的大小,有时它只是一个 void 函数等)
有谁有想法吗?
注:尽快 status获取 Status.ABORTED ,我可以返回(我不需要执行函数的其余部分,因为只有在 status 不是 Status.ABORTED 时才会执行任何操作)。

最佳答案

这看起来像是 try-catch 方法的一个很好的案例。您可以在任何一种方法中抛出异常,例如StatusAbortedException并捕获它以返回适当的状态。它可能看起来像这样

try {
Status status = doSomethingElse();
status = doAgainSomethingElse(param1, param2);
status = doSomethingWhichDoesntReturn(param3); // this one probably does smth else
return status;
} catch (StatusAbortedException e){
// return Status.Aborted
}

关于java - 执行函数时避免连续的 "if (...)"检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67899326/

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