这段代码通过将三个方法合并成一个方法,并使用泛型参数,实现了代码的优化。

原始代码:

internal static PlayerAbodeRealmRes AssembleToClient(PlayerAbode info,PlayerAbodeRealmRes playerAbodeRealmRes,int realmId)
{
    playerAbodeRealmRes.PlayerId = info.PlayerId;
    playerAbodeRealmRes.TodayUseNum = info.TodayUseNum;
    playerAbodeRealmRes.AbodeExp = CalcAccumulateExp(realmId, info.AbodeStartTime);
    playerAbodeRealmRes.BreakFailTime = DateTimeUtil.GetUnixTimeStamp(info.BreakFailTime);
    playerAbodeRealmRes.AbodeStartTime = DateTimeUtil.GetUnixTimeStamp(info.AbodeStartTime);
    return playerAbodeRealmRes;
}

/// <summary>
/// 组装返回使用经验丹信息
/// </summary>
/// <param name="info"></param>
/// <param name="playerAbodeRealmRes"></param>
/// <param name="realmId"></param>
/// <returns></returns>
internal static PlayerAbodeRealmUseExpDanRes AssembleToClient(PlayerAbode info,PlayerAbodeRealmUseExpDanRes playerAbodeRealmRes,int realmId)
{
    playerAbodeRealmRes.PlayerId = info.PlayerId;
    playerAbodeRealmRes.TodayUseNum = info.TodayUseNum;
    playerAbodeRealmRes.AbodeExp = CalcAccumulateExp(realmId, info.AbodeStartTime);
    playerAbodeRealmRes.BreakFailTime = DateTimeUtil.GetUnixTimeStamp(info.BreakFailTime);
    playerAbodeRealmRes.AbodeStartTime = DateTimeUtil.GetUnixTimeStamp(info.AbodeStartTime);
    return playerAbodeRealmRes;
}

/// <summary>
/// 组装返回突破信息
/// </summary>
/// <param name="info"></param>
/// <param name="playerAbodeRealmRes"></param>
/// <param name="realmId"></param>
/// <returns></returns>
internal static PlayerAbodeRealmBreakThroughDanRes AssembleToClient(PlayerAbode info,PlayerAbodeRealmBreakThroughDanRes playerAbodeRealmRes,int realmId)
{
    playerAbodeRealmRes.PlayerId = info.PlayerId;
    playerAbodeRealmRes.TodayUseNum = info.TodayUseNum;
    playerAbodeRealmRes.AbodeExp = CalcAccumulateExp(realmId, info.AbodeStartTime);
    playerAbodeRealmRes.BreakFailTime = DateTimeUtil.GetUnixTimeStamp(info.BreakFailTime);
    playerAbodeRealmRes.AbodeStartTime = DateTimeUtil.GetUnixTimeStamp(info.AbodeStartTime);
    return playerAbodeRealmRes;
}

优化后的代码:

internal static T AssembleToClient<T>(PlayerAbode info, T playerAbodeRealmRes, int realmId)
{
    playerAbodeRealmRes.PlayerId = info.PlayerId;
    playerAbodeRealmRes.TodayUseNum = info.TodayUseNum;
    playerAbodeRealmRes.AbodeExp = CalcAccumulateExp(realmId, info.AbodeStartTime);
    playerAbodeRealmRes.BreakFailTime = DateTimeUtil.GetUnixTimeStamp(info.BreakFailTime);
    playerAbodeRealmRes.AbodeStartTime = DateTimeUtil.GetUnixTimeStamp(info.AbodeStartTime);
    return playerAbodeRealmRes;
}

调用方式:

PlayerAbodeRealmRes playerAbodeRealmRes = AssembleToClient(info, new PlayerAbodeRealmRes(), realmId);
PlayerAbodeRealmUseExpDanRes playerAbodeRealmUseExpDanRes = AssembleToClient(info, new PlayerAbodeRealmUseExpDanRes(), realmId);
PlayerAbodeRealmBreakThroughDanRes playerAbodeRealmBreakThroughDanRes = AssembleToClient(info, new PlayerAbodeRealmBreakThroughDanRes(), realmId);

优化后的代码将三个方法合并为一个,并使用泛型参数,避免了代码重复,提高了代码的效率和可维护性。


原文地址: https://www.cveoy.top/t/topic/nGiY 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录