清理java代码、多个else if语句

nkhmeac6  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(280)

此方法过滤帧分数并将其添加。我已经提高了我所能做的,但在我看来,这是有可能提高更多,但我怎么不知道。有什么想法吗?

public boolean addFramePinsDown(int player, Frame frame) {

    if (game.getPlayersList().size() > player) {
        if (game.getPlayersList().get(player).getFrame() < BowlingEnum.MAX_FRAMES.getValue()) {
            if (frame.getThirdRoll() == 0) {
                if (frame.getFirstRoll() + frame.getSecondRoll() <= BowlingEnum.MAX_PINS.getValue()) {
                    addAndCountFrames(player, frame);
                    return true;
                }
            }
        } else if (game.getPlayersList().get(player).getFrame() == BowlingEnum.MAX_FRAMES.getValue()) {
            if (frame.getFirstRoll() == 10) {
                if (frame.getSecondRoll() == 10 && frame.getThirdRoll() <= BowlingEnum.MAX_PINS.getValue()) {
                    addAndCountFrames(player, frame);
                    return true;
                } else if (frame.getSecondRoll() < BowlingEnum.MAX_PINS.getValue() && frame.getThirdRoll() == 0) {
                    addAndCountFrames(player, frame);
                    return true;
                }
            } else if (frame.getSecondRoll() == BowlingEnum.MAX_PINS.getValue() &&
                    frame.getThirdRoll() <= BowlingEnum.MAX_PINS.getValue()) {
                addAndCountFrames(player, frame);
                return true;
            } else if(frame.getFirstRoll() + frame.getSecondRoll() == BowlingEnum.MAX_PINS.getValue() &&
                    frame.getThirdRoll() <= BowlingEnum.MAX_PINS.getValue()){
                addAndCountFrames(player, frame);
                return true;
            } else if (frame.getFirstRoll() + frame.getSecondRoll() < BowlingEnum.MAX_PINS.getValue() &&
                    frame.getThirdRoll() == 0) {
                addAndCountFrames(player, frame);
                return true;
            }
        }
    }
    return false;
}
rxztt3cl

rxztt3cl1#

现在需要的是将大型if分支抽象到方法中。
如果您使用intellij idea,您可以选择一些代码并提取方法,这些方法将自动创建具有正确参数的方法。
然后,给这个方法一个描述性的名称,这样人们就可以查看这个方法调用,并找出这个方法将做什么。

相关问题