在循环中使用 "continue" 是反模式吗?

using "continue" in loop is anti pattern?

您认为下面的代码是反模式吗?
condition1, contidion2, condition3 是另一种状态值。

for(Dto dto : list){
    if(condition1(dto.getErrYn())){
        ...code...
        continue;
    }

    if(condition2(dto.getChangeYn())){
        ...code...
        continue;
    }

    if(condition3(dto.getRunYn())){
        ...code...
        continue;
    }
}

使用"if-else if"更好?

for(Dto dto : list){
    if(condition1(dto.getErrYn())){
        ...code...
    }else if(condition2(dto.getChangeYn())){
        ...code...
    }else if(condition3(dto.getRunYn())){
        ...code...
    }
}

还是使用"case"更好?

您认为最好的方法是什么?或者有更好的方法吗?

没有。在循环中使用 continue 不是 anti-pattern。但是,像在您的第一个示例中那样使用 continue 是愚蠢的。

您无缘无故地引入了更多代码行,而不是使用每个人都会理解的标准 if-else 模式。我不知道你是从哪里想到那样使用 continue 的(或者你可能在别人的代码中看到过),但这是错误的。

如果您想知道做事的最佳方法,请看看其他(有经验的)人是如何做的。根据您的工作地点,您的同事可能不是最好的信息来源。

"if-else if" 优于 "continue" 方法的优势在于,您可以立即看到只有一个条件可以 运行。当您需要在每个条件的末尾添加 "continue" 时,有人可能会忘记它。 当谈到 "swith case" 时,它被认为是 OOP 语言中的代码味道。 在这里你有关于它的好文章: http://wiki.c2.com/?SwitchStatementsSmell