在循环中使用 "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
您认为下面的代码是反模式吗?
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