1 回答

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超6個(gè)贊
要知道轉(zhuǎn)賬是否已完成,我建議返回一個(gè)布爾值,然后檢查貨幣并false如果不同則返回。還可以使用您編寫的方法來轉(zhuǎn)賬,這也是一個(gè)好主意
@Override
public boolean transferMoney(User fromUser, User toUser, int amount) {
if (!checkWithdraw(fromUser, amount)) return false;
if (!checkFund(toUser, amount)) return false;
if (fromUser.getBank().getCurrency() != toUser.getBank().getCurrency()) return false;
withdraw(fromUser, amount);
fund(toUser, amount);
return true;
}
但是,隨著方法withdraw和fund檢查的進(jìn)行,會(huì)調(diào)用冗余代碼,您可以這樣做:
@Override
public boolean withdraw(User user, int amount) {
if (!checkWithdraw(user, amount)) return false;
user.setBalance(user.getBalance() - amount - amount * user.getBank().getCommission(amount));
return true;
}
@Override
public boolean fund(User user, int amount) {
if (!checkFund(user, amount)) return false;
user.setBalance(user.getBalance() + amount);
return true;
}
@Override
public boolean transferMoney(User fromUser, User toUser, int amount) {
if (fromUser.getBank().getCurrency() != toUser.getBank().getCurrency()) return false;
return withdraw(fromUser, amount) && fund(toUser, amount);
}
解釋:
你會(huì)打電話給
withdraw
如果有效,它將返回
true
,并且邏輯表達(dá)式的第二部分將被測試并執(zhí)行如果它不起作用(
checkWithdraw
不好),它將返回false
,并且邏輯表達(dá)式的第二部分將不會(huì)被執(zhí)行,并且您將不會(huì)執(zhí)行fund
其他帳戶如果
withdraw
返回,true
它將調(diào)用該fund
方法,并且全局將返回fund
返回 true :true && true
所以返回true
fund
返回 false:true && false
所以返回false
添加回答
舉報(bào)