编写此Java代码的更短,更有效的方法

时间:2019-02-09 19:19:01

标签: java

编写此代码并避免重复的最佳方法是什么?

if (doAction() || checkNumber() || canMove() || avoidAttackersWhileHeal()) {
    return;
}

if (doCast() || doAttack()) {
    return;
}

我有很多这样的方法,每个返回true的方法都不会继续,但是这样的编码风格很难看。还有其他写方法吗?

1 个答案:

答案 0 :(得分:1)

作为替代,您可以将单个方法包装在单独的Predicate中,然后使用所需的操作构建公共谓词。最后的Predicate隐藏了所有if...else

private final Predicate<Void> predicate;

{
    Predicate<Void> doAction = in -> doAction();
    Predicate<Void> checkNumber = in -> checkNumber();
    Predicate<Void> canMove = in -> canMove();
    Predicate<Void> avoidAttackersWhileHeal = in -> avoidAttackersWhileHeal();
    Predicate<Void> doCast = in -> doCast();
    Predicate<Void> doAttack = in -> doAttack();
    predicate = doAction.or(checkNumber).or(canMove).or(avoidAttackersWhileHeal).or(doCast).or(doAttack);
}

public void doIt() {
    predicate.test(null);
}