编写此代码并避免重复的最佳方法是什么?
if (doAction() || checkNumber() || canMove() || avoidAttackersWhileHeal()) {
return;
}
if (doCast() || doAttack()) {
return;
}
我有很多这样的方法,每个返回true的方法都不会继续,但是这样的编码风格很难看。还有其他写方法吗?
答案 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);
}