有条件地添加额外的if语句

时间:2013-09-03 18:05:56

标签: java android if-statement methods code-duplication

从我的应用程序(游戏)的每个级别调用以下内容

伪代码示例

public void checkCollisions(){

    if (someCondition)
        do something

    else if (someCondition2)
        do something2

    else if (someCondition3)
        do something3

}

这样称呼:

mainGame.checkCollisions();

但是,在选定的级别中,我需要抛出一个额外的条件,所以不要像..........那样重复整个方法。

 public void checkCollisions2(){

    if (someCondition)
        do something

    else if (someCondition2)
        do something2

    else if (someCondition3)
        do something3

    else if (someCondition4)
        do something4

}

然后将其称为..........

mainGame.checkCollisions2();

我需要找到一种方法来更有效地做到这一点(我确定有一个)我能想到的唯一方法是接受一个布尔值然后执行第四个条件(或不执行)取决于什么布尔值的值是,但这似乎也不是一种很好的方式(例如,如果我想在将来添加更多条件)。

这必须是'else if'语句,所以除了原始方法之外,我不能把它放到一个单独的方法中。

选项将不胜感激

1 个答案:

答案 0 :(得分:4)

checkCollisions返回boolean,表明它是“做了什么”。

public boolean checkCollisions(){
    boolean didSomething = false;
    if (someCondition) {
       doSomething();
       didSomething = true;
    }
    else if (condition2) {
       doSomething2();
       didSomething = true;
    } 
    else if (condition3){
       doSomething3();
       didSomething = true;
    }
    return didSomething;
}

然后,checkCollisions2可以调用checkCollisions并检查它是否有所作为。然后您的else if可以正常工作:

public void checkCollisions2(){
    if (checkCollisions()) {
       // Yes, something was done!
    }
    else if (condition4) {
       doSomething4();
    }
}

或更短:

public void checkCollisions2(){
    if (!checkCollisions() && condition4) {
       doSomething4();
    }
}