代码风格:对于不同的子句在底部进行概括?

时间:2014-02-15 20:57:43

标签: coding-style

我有一个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?

}

1 个答案:

答案 0 :(得分:1)

我建议尽可能简化代码,以便更容易理解。具体取决于你的条款内容。

例如,按照您的建议提取代码可能比较清晰,但是continue与非continue条款的组合可能会使代码的读者感到困惑。另一种方法可能是将重复的代码提取到一个单独的方法中,并在必要时调用它,这样做的好处是可以给它一个有意义的名称。

但是,您已将此代码描述为带有子句的 if ... else if链。这是一种代码气味,并表明可能需要更深入的重构才能使其可维护。例如,请考虑使用strategy pattern