此方法过滤帧分数并将其添加。我已经提高了我所能做的,但在我看来,这是有可能提高更多,但我怎么不知道。有什么想法吗?
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;
}
1条答案
按热度按时间rxztt3cl1#
现在需要的是将大型if分支抽象到方法中。
如果您使用intellij idea,您可以选择一些代码并提取方法,这些方法将自动创建具有正确参数的方法。
然后,给这个方法一个描述性的名称,这样人们就可以查看这个方法调用,并找出这个方法将做什么。