特定的方法只做特定的事情

/** 是否还有战斗未结束 */
	public static boolean hasWarNotEnd(long roleId) {
		WarBean wb = getWarByRole(roleId);
		if(wb == null) {
			WarEndListenerBase listener = getCacheWarEndListener(roleId);
			if (listener == null) {
				return false;
			}
		} else {
			long gapTime = System.currentTimeMillis()-wb.getWarBeginTime();
			// 结束掉超过两个小时的战斗
			if(gapTime >= 3600*1000*2) {
				//代码注释掉,导致死循环
				try {
					warEnd(roleId, -1, new WarEndInfoBean(false), true);
				} catch (Exception e) {
					e.printStackTrace();
					logger.error("自动结束玩家["+roleId+"]上一场战斗发生错误,因为战斗时间超过2小时!", e);
				}
				return false;
			}
		}
		return true;
	}

 该段代码喜欢在判断战斗是否结束的情况下,把超过2小时的战斗偷偷的结束,在用户登录,需要判断用户是否在战斗中的代码还是在引用是否这个方法,导致出现了死循环 。这个方法在方法命名上只判断是否结束,而不应该做操作,方法的命名和方法的实现应该尽量的遵循统一的规则,不然很容易造成歧义而写出类似的代码

at com.game.business.listener.SingleWarEndListener.doProcess(SingleWarEndListener.java:98)
	at com.game.business.manager.WarManager.doWarEndListener(WarManager.java:734)
	at com.game.business.manager.WarManager.warEnd(WarManager.java:848)
	at com.game.business.manager.WarManager.hasWarNotEnd(WarManager.java:2087)
	at com.game.business.listener.SingleWarEndListener.doProcess(SingleWarEndListener.java:98)
	at com.game.business.manager.WarManager.doWarEndListener(WarManager.java:734)
	at com.game.business.manager.WarManager.warEnd(WarManager.java:848)
	at com.game.business.manager.WarManager.hasWarNotEnd(WarManager.java:2087)
	at com.game.business.listener.SingleWarEndListener.doProcess(SingleWarEndListener.java:98)
	at com.game.business.manager.WarManager.doWarEndListener(WarManager.java:734)
	at com.game.business.manager.WarManager.warEnd(WarManager.java:848)
	at com.game.business.manager.WarManager.hasWarNotEnd(WarManager.java:2087)
	at com.game.business.listener.SingleWarEndListener.doProcess(SingleWarEndListener.java:98)
	at com.game.business.manager.WarManager.doWarEndListener(WarManager.java:734)
	at com.game.business.manager.WarManager.warEnd(WarManager.java:848)
	at com.game.business.manager.WarManager.hasWarNotEnd(WarManager.java:2087)
	at com.game.business.listener.SingleWarEndListener.doProcess(SingleWarEndListener.java:98)
	at com.game.business.manager.WarManager.doWarEndListener(WarManager.java:734)
	at com.game.business.manager.WarManager.warEnd(WarManager.java:848)
	at com.game.business.manager.WarManager.hasWarNotEnd(WarManager.java:2087)
	at com.game.business.listener.SingleWarEndListener.doProcess(SingleWarEndListener.java:98)
	at com.game.business.manager.WarManager.doWarEndListener(WarManager.java:734)
	at com.game.business.manager.WarManager.warEnd(WarManager.java:848)
	at com.game.business.manager.WarManager.hasWarNotEnd(WarManager.java:2087)
	at com.game.business.listener.SingleWarEndListener.doProcess(SingleWarEndListener.java:98)
	at com.game.business.manager.WarManager.doWarEndListener(WarManager.java:734)
	at com.game.business.manager.WarManager.warEnd(WarManager.java:848)
	at com.game.business.manager.WarManager.hasWarNotEnd(WarManager.java:2087)
	at com.game.business.listener.SingleWarEndListener.doProcess(SingleWarEndListener.java:98)
	at com.game.business.manager.WarManager.doWarEndListener(WarManager.java:734)
	at com.game.business.manager.WarManager.warEnd(WarManager.java:848)
	at com.game.business.manager.WarManager.hasWarNotEnd(WarManager.java:2087)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值