编辑:完全重写了这个问题,因为原文不清楚。
在需要保留 someTestMethod 返回值以执行进一步测试的情况下执行以下操作是不好的做法?:
boolean foo;
if(someCondition || (foo=someTestMethod()) || someOtherConditions){
//do stuff depending on foo value
}
因为我正在测试一个布尔值并同时影响它,这就是让我想知道一切是否正确的原因。我正在以这种方式编写测试,因为 someTestMethod 花费了大量时间,如果第一次测试通过,我不希望它被调用。
我必须补充说我已经简化了很多,请不要回复关于如何重写测试的问题,我只想知道你是否可以安全地编写 if(foo = someTest()),导致测试变量并同时影响变量。
答案 0 :(得分:0)
你所做的事情在技术上没有任何问题。它适用于任何Java编译器。
然而,以下是相同的,对我来说,更清楚。
if(p1(x,y) {
println("I only ran p1");
} else if (p2(x,33)) {
println("I only ran p2");
} else if(p3(y,33)) {
println("Ran all three");
}
但是有一个隐含的部分不在你的例子中。大概你想用OR的结果做其他事情。最好有一个方法:
if(combinedConditions(x,y) {
doSomething();
}
boolean combinedConditions(int x, int y) {
if (p1(x,y)) {
println("I only ran p1");
return true;
}
if (p2(x,33)) {
println("I ran p1 and p2");
return true;
}
println("I ran all three");
return p3(y,33);
}
更一般地说,“调试”printlns是坏消息。