Java 如何重构分步代码?
考虑一个代码示例 这是我不知道的模式吗 如何清理这些杂物Java 如何重构分步代码?,java,design-patterns,Java,Design Patterns,考虑一个代码示例 这是我不知道的模式吗 如何清理这些杂物 int func1val = func1(); boolean val = checkIfTrue(func1val); if (val) { int func2val = func2(); val = checkIfTrue(func2val); if (val) { int func3val = func3(); val = checkIfTrue(func3val);
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,
}
如何使用mid方法返回清除它
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,
看起来您正在打印这三个值,当且仅当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
}
}
}
说句公道话,大概是
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
}
}
}
应该做同样的事情,根据实际情况可能更具可读性。下层选民,请留下评论。