使用"继续"在循环中是反模式?

时间:2018-04-04 06:52:12

标签: java loops continue

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

df2 = (df.groupby('Job Title')['Qualification Name']
       .apply(lambda x: list(set(x)))
       .reset_index())

print (df2)
                     Job Title  \
0               .Net Developer   
1  Snr Finance Systems Analyst   

                                  Qualification Name  
0  [Diploma of Software Development, Diploma of S...  
1                                             [None]  

df2 = (df.groupby('Job Title')['Qualification Name']
       .apply(lambda x: list(x.unique()))
       .reset_index())

print (df2)
                     Job Title  \
0               .Net Developer   
1  Snr Finance Systems Analyst   

                                  Qualification Name  
0  [Diploma of Software Development, Certificate ...  
1                                             [None]  

使用" if-else if"更好?

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

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

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

或使用" case"更好吗?

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

2 个答案:

答案 0 :(得分:5)

没有。在循环中使用continue不是反模式。但是,在第一个例子中使用continue就像是愚蠢的。

由于没有明显的原因,您引入了更多代码行,而不是使用每个人都能理解的标准if-else模式。我不知道你在哪里使用continue这样的想法(或者你在其他人的代码中看到过它),但这是坏事和错误。

如果您想了解最佳的做事方式,请查看其他(经验丰富的)人员如何做到这一点。根据您的工作地点,您的同事可能不是最佳信息来源。

答案 1 :(得分:0)

“if-else if”优于“继续”方法的优点是您立即看到只有一种情况可以运行。当你需要在每个条件结束时添加“继续”时,有人可能会忘记它。 当谈到“swith case”时,它被认为是OOP语言中的代码味道。 在这里你有一篇很好的文章: http://wiki.c2.com/?SwitchStatementsSmell