-2

更新しました:

次のようなコードがあります。

class Sample 
{
    public boolean isALive(boolean isLive, int num) 
   {
       return isLive ? num == 3 : num == 2 || num == 3;
   } 
}

テストでは、このようなものになります。

assertTrue(x.isAlive(true,1);いろいろな組み合わせで

三項演算子を使用しなくても、同じ結果をより簡単な方法で返したいと考えています。

これを行う方法はありますか?

解決策: return num == 3 || (isLive && num == 2); //- 解決。

4

1 に答える 1

0

プログラミングはワンライナーではありません。それは読みやすさについてです。最初に私はテストを書きます:

import static org.assertj.core.api.Assertions.assertThat;
import org.junit.runner.RunWith;
import com.googlecode.zohhak.api.TestWith;
import com.googlecode.zohhak.api.runners.ZohhakRunner;

@RunWith(ZohhakRunner.class)
public class SampleTest {

    Sample sample = new Sample();

    @TestWith({
        "true,  3,      true",
        "true,  2,      false",
        "false, 3,      true",
        "false, 2,      true",
        "false, 1,      false"
    })
    public void should_xxx(boolean isLive, int num, boolean expectedResult) {

        boolean actualResult = sample.isALive(isLive, num);         
        assertThat(actualResult).isEqualTo(expectedResult);
    }
}

そして、私は書くでしょう:

import static org.apache.commons.lang3.ArrayUtils.contains;

public class Sample {

    public boolean isALive(boolean isLive, int num) {

        int[] liveValues = {3};
        int[] deadValues = {2, 3};

        int[] validValues = isLive ? liveValues : deadValues;
        return contains(validValues, num);
    }
}
于 2013-09-23T18:58:16.557 に答える