您认为以下代码是反模式吗?
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"更好吗?
您认为最好的方法是什么?或者有更好的方法吗?
答案 0 :(得分:5)
没有。在循环中使用continue
不是反模式。但是,在第一个例子中使用continue
就像是愚蠢的。
由于没有明显的原因,您引入了更多代码行,而不是使用每个人都能理解的标准if-else
模式。我不知道你在哪里使用continue
这样的想法(或者你在其他人的代码中看到过它),但这是坏事和错误。
如果您想了解最佳的做事方式,请查看其他(经验丰富的)人员如何做到这一点。根据您的工作地点,您的同事可能不是最佳信息来源。
答案 1 :(得分:0)
“if-else if”优于“继续”方法的优点是您立即看到只有一种情况可以运行。当你需要在每个条件结束时添加“继续”时,有人可能会忘记它。 当谈到“swith case”时,它被认为是OOP语言中的代码味道。 在这里你有一篇很好的文章: http://wiki.c2.com/?SwitchStatementsSmell