考虑代码示例。
这是一些我不知道的模式吗?
如何清理这种混乱?
int func1val = func1();
boolean val = checkIfTrue(func1val);
if (val) {
int func2val = func2();
val = checkIfTrue(func2val);
if (val) {
int func3val = func3();
val = checkIfTrue(func3val);
}
}
if (val) {
// print func1val, func2val, func3val,
}
答案 0 :(得分:0)
如何清理它是使用mid-method返回。
int func1val = func1();
boolean val = checkIfTrue(func1val);
if (!val) return;
int func2val = func2();
val = checkIfTrue(func2val);
if (!val) return;
int func3val = func3();
val = checkIfTrue(func3val);
if (!val) return;
// print func1val, func2val, func3val,
然后你甚至不需要val;只是内联每个事件:
int func1val = func1();
if (!checkIfTrue(func1val)) return;
int func2val = func2();
if (!checkIfTrue(func2val)) return;
int func3val = func3();
if (!checkIfTrue(func3val)) return;
// print func1val, func2val, func3val,
答案 1 :(得分:0)
当且仅当checkIfTrue
对所有三个值都返回true时,看起来你打印出这三个值。除了checkIfTrue
的一些实现细节,你不能做像
int func1val = 0, func2val = 0, func3val = 0; // any value here
if (checkIfTrue(func1val = func1()) && checkIfTrue(func2val = func2()) && checkIfTrue(func3val = func3())) {
// print func1val, func2val, func3val
}
公平地说,像是
int func1val = func1();
if (checkIfTrue(func1val)) {
int func2val = func2();
if (checkIfTrue(func2val)) {
int func3val = func3();
if (checkIfTrue(func3val)) {
// print func1val, func2val, func3val
}
}
}
应该做同样的事情,根据实际情况可能更具可读性。