我有一个for循环,其中if ... else if chain in inside,并且每个case中都有一个子句。其中一些条款可能很长,但有一些代码存在于其他条款中。我是否应该使用与其他子句相同的其他子句中的代码中的代码,并将它们放在if ... else if链的末尾,并将CONTINUE放在不使用此代码的子句中,或者我应该离开它?
例如,
for {
if (...) {
// clause1: has some code that matches clause2, and others but not all clauses
} else if (...) {
// clause2: has some code that matches clause1
} else if (...) {
// clause3: no code matches clause1
}
// maybe generalize clause1 and clause2 code and put here? and put a CONTINUE in the third clause/clauses that don't have this generalizable code?
}
答案 0 :(得分:1)
我建议尽可能简化代码,以便更容易理解。具体取决于你的条款内容。
例如,按照您的建议提取代码可能比较清晰,但是continue
与非continue
条款的组合可能会使代码的读者感到困惑。另一种方法可能是将重复的代码提取到一个单独的方法中,并在必要时调用它,这样做的好处是可以给它一个有意义的名称。
但是,您已将此代码描述为带有长子句的长 if
... else if
链。这是一种代码气味,并表明可能需要更深入的重构才能使其可维护。例如,请考虑使用strategy pattern。