Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何重构分步代码?_Java_Design Patterns - Fatal编程技术网

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
        }
    }
}

应该做同样的事情,根据实际情况可能更具可读性。

下层选民,请留下评论。