我的代码太长。可以简化吗?

时间:2019-01-15 07:49:55

标签: c#

我对我的代码有一个小疑问。我有两个条件,我想知道是否可以使用一种方法或某些方法使这段代码更简单,更短。

 if (CoatRandom.randomRule.getLastBlock() % 2 == 0)
    {
        Clothes[askedCoatRandom.getRandom()].setCurrentChildIndex(CoatRandom.randomRule.getLastBlock() + 1);
        CoatRandom.randomRule.addBlock(CoatRandom.randomRule.getLastBlock() + 1);
        badCoatRandom.randomRule.addBlock(CoatRandom.randomRule.getLastBlock() + 1);
    }
    else
    {
        Clothes[askedCoatRandom.getRandom()].setCurrentChildIndex(CoatRandom.randomRule.getLastBlock() - 1);
        CoatRandom.randomRule.addBlock(CoatRandom.randomRule.getLastBlock() - 1);
        badCoatRandom.randomRule.addBlock(CoatRandom.randomRule.getLastBlock() - 1);
    }

2 个答案:

答案 0 :(得分:5)

Thread.currentThread().getContextClassLoader().getResourceAsStream(propertiesFileName)

答案 1 :(得分:3)

您可以组合这两个条件:

int shift = CoatRandom.randomRule.getLastBlock() % 2 == 0 ? 1 : -1;
Clothes[askedCoatRandom.getRandom()].setCurrentChildIndex(CoatRandom.randomRule.getLastBlock() + shift);
CoatRandom.randomRule.addBlock(CoatRandom.randomRule.getLastBlock() + shift);
badCoatRandom.randomRule.addBlock(CoatRandom.randomRule.getLastBlock() + shift); 

如果CoatRandom.randomRule.getLastBlock()每次调用时都返回 same 值,则可以对其进行缓存

var index = CoatRandom.randomRule.getLastBlock() + 
           (CoatRandom.randomRule.getLastBlock() % 2 == 0 ? 1 : -1);

Clothes[askedCoatRandom.getRandom()].setCurrentChildIndex(index);
CoatRandom.randomRule.addBlock(index);
badCoatRandom.randomRule.addBlock(index);