【发布时间】:2015-06-27 23:35:20
【问题描述】:
我有以下代码:
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语句中检查它的值。 -
看起来像codereview.stackexchange.com 的问题。
标签: c++11 readability code-readability