Java Mid Basic 〜Lv2_3_Javaの基本(リファクタリング実践)ゲームループ付き〜

イントロダクション

前回は、リファクタリングについて触れました。
しかしコードまではいかなかったので、今回はコードの話をします。

リファクタ実践

まずは修正するコードを眺めます。
そーすると、だんだん同じような処理をしているところが見えてきます。

同じ処理をしているのはどこでしょう?

Switch文のところです、switch(kigo) {とコードを書いている部分が複数見当たります。しかも結構な行数を使っている。。。

そんなわけで、対象の部分をまとめてしまおうと考えるわけなのですが、キーワードは「同じような処理(コード)」です、同じような処理なので、値を変えてやれば、ちょっと工夫をすれば、なんとかなりそうです。

自分の出した答えは

「メソッドを作成する」です。そして、作成するメソッドは入力された計算式から「足し算なのか、引き算なのか。。。」を判定するメソッドを作成しました。実際にコードを記載します。

/*
 * judgeKigo()のテスト
 */
@Test
public void testJudgeKigo() {
    Lv2_3_Calculate test = new Lv2_3_Calculate();
    try {
        int kigo = test.jadgeKigo("1+1");
        assertEquals(0, kigo);
        int kigo1 = test.jadgeKigo("1-1");
        assertEquals(1, kigo1);
        int kigo2 = test.jadgeKigo("1*1");
        assertEquals(2, kigo2);
        int kigo3 = test.jadgeKigo("1/1");
        assertEquals(3, kigo3);
    } catch(Exception e) {
        e.printStackTrace();
        fail();
    }
}

処理の内容としては以下の通りです。

  1. テスト対象メソッド(jadgeKigo())に「1+1」を渡した時の結果が「0(足し算)」である事の確認。
  2. 同様に引き算(1)
  3. 掛け算(2)
  4. 割り算(3)

このメソッドが想定通りに動くのかテストします。作成したのはLv2_3_CalculateTestです。

問題

今度はswitch文を何度も書かなくて良いように修正して見てください。テストクラスで上のように、この値を渡したらこー返ってくる。というのを確認するメソッドがあれば、修正しても問題がないことをすぐに確認できます。

処理の実行するサンプルコードです。
そして、テストクラスです。

追伸

リファクタリング(メソッドで処理を分割しただけ)の後にテストを実行して見ました。

でわでわ。。。



  1. Java Basic Level 1 Hello Java
  2. Java Basic Level2 Arithmetic Calculate
  3. Java Basic Level3 About String class
  4. Java Basic Level 4Boolean
  5. Java Basic Level 5If Statement
  6. Java Basic Summary from Level1 to 5
  7. Java Basic Level 6 Traning of If statement
  8. Java Basic Level8 How to use for statement
  9. Java Basic Level 8.5 Array
  10. Java Basic Level 9Training of for statement
  11. Java Basic Level 10 While statement
  12. Java Basic Swing〜オブジェクト指向〜
  13. Java Basic Swing Level 2〜オブジェクト指向2
  14. サンプル実装〜コンソールゲーム〜
  15. Java Basic インターフェース・抽象クラスの作り方
  16. Java Basic クラスとは〜Step2_1
  17. Java Basic JUnit 〜テストスイートの作り方〜