2 qq 29943797 qq_29943797 于 2016.09.06 17:21 提问

两个很相似的方法,能否合并为一个方法
     private int GetAllMonsterEXP()
    {
        int exps = 0;
        for (int i = 0; i < monsterNum; i++)
        {
            exps += MonsterInitInfoList[roleAttMonsterIndex].exp;
        }
        return exps;
    }


    private int GetAllMonsterGold()
    {
        int gold = 0;
        for (int i = 0; i < monsterNum; i++)
        {
            gold += MonsterInitInfoList[roleAttMonsterIndex].gold;
        }
        return gold;
    }

就是上面两个方法,可以合并为一个方法吗,通过传递匿名方法之类的??

5个回答

soslinken
soslinken   2016.09.06 17:33
已采纳

如果只有这两个方法,暂时不重构也无所谓,很清晰,如果要重构,可以重构成这样

  private int GetAllMonsterEXPOrGlod(boolean isGetExp)
    {
        int data = 0;
        for (int i = 0; i < monsterNum; i++)
        {
                        if(isGetExp){
               data += MonsterInitInfoList[roleAttMonsterIndex].exp;
                        }else{
                           data += MonsterInitInfoList[roleAttMonsterIndex].gold;
                        }
        }
        return data;
    }

如果多的话,if 换个switch case ,参数换个String 或者 int

如果需要获取的数据类型有很多,那就改策略模式就好了

kun_tostudy
kun_tostudy   Rxr 2016.09.06 17:22

不用吧 这样挺好 :-)

qq_29594393
qq_29594393   Ds   Rxr 2016.09.06 17:31
      private int GetAllMonsterEXP()
    {
        int exps = 0;
        for (int i = 0; i < monsterNum; i++)
        {
            exps += MonsterInitInfoList[roleAttMonsterIndex].exp;
        }
        return exps;
    }


    private int GetAllMonsterGold()
    {
     return GetAllMonsterEXP();
    }
hongdeng123
hongdeng123   2016.09.06 17:40

我感觉两个方法都是一样的啊,应该可以和并成一个直接使用

ning0_o
ning0_o   2016.09.06 17:30

感觉这2个就是一个方法的样子

Csdn user default icon
上传中...
上传图片
插入图片