イントロダクション
前回は、リファクタリングについて触れました。
しかしコードまではいかなかったので、今回はコードの話をします。
リファクタ実践
まずは修正するコードを眺めます。
そーすると、だんだん同じような処理をしているところが見えてきます。
同じ処理をしているのはどこでしょう?
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(); } }
処理の内容としては以下の通りです。
- テスト対象メソッド(jadgeKigo())に「1+1」を渡した時の結果が「0(足し算)」である事の確認。
- 同様に引き算(1)
- 掛け算(2)
- 割り算(3)
このメソッドが想定通りに動くのかテストします。作成したのはLv2_3_CalculateTestです。
問題
今度はswitch文を何度も書かなくて良いように修正して見てください。テストクラスで上のように、この値を渡したらこー返ってくる。というのを確認するメソッドがあれば、修正しても問題がないことをすぐに確認できます。
処理の実行するサンプルコードです。
そして、テストクラスです。
追伸
リファクタリング(メソッドで処理を分割しただけ)の後にテストを実行して見ました。
でわでわ。。。
- Java Basic Level 1 〜Hello Java〜
- Java Basic Level2 〜Arithmetic Calculate〜
- Java Basic Level3 〜About String class〜
- Java Basic Level 4〜Boolean〜
- Java Basic Level 5〜If Statement〜
- Java Basic Summary from Level1 to 5
- Java Basic Level 6 〜Traning of If statement〜
- Java Basic Level8 〜How to use for statement〜
- Java Basic Level 8.5 〜Array〜
- Java Basic Level 9〜Training of for statement〜
- Java Basic Level 10 〜While statement 〜
- Java Basic Swing〜オブジェクト指向〜
- Java Basic Swing Level 2〜オブジェクト指向2〜
- サンプル実装〜コンソールゲーム〜
- Java Basic インターフェース・抽象クラスの作り方
- Java Basic クラスとは〜Step2_1〜
- Java Basic JUnit 〜テストスイートの作り方〜