我有以下代碼:有沒有更好的可讀方式來寫這個if語句鏈?
Creature::cancelWalk()
{
Player* player = getPlayer();
if (!player) {
if (getMonster() && getMonster()->getMaster() && getMonster()->getMaster()->getPlayer()) {
player = getMonster()->getMaster()->getPlayer();
}
}
if (player) {
player->sendCancelMessage(ret);
player->sendCancelWalk();
}
}
經過短暫的分析,很容易理解我想要實現的東西很簡單:
如果creature
是player
本身,然後sendCancelMessage
和sendCancelWalk
。否則,如果creature
是一個monster
也有一個主人是player
,發送相同的東西到客戶端。
有沒有更好的方式來寫這個代碼沒有上Monster
,Creature
和Player
類添加其他方法?
Monster
和Player
都是來自Creature
的「兄弟姐妹」。
假定爲'getMonster()連續調用 - > getMaster () - > getPlayer()'不能返回不同的值,你不必在'if'語句中檢查它的值。 –
看起來像http://codereview.stackexchange.com的問題。 – DanielKO