イントロダクション
前回は、リファクタリングについて触れました。
しかしコードまではいかなかったので、今回はコードの話をします。
リファクタ実践
まずは修正するコードを眺めます。
そーすると、だんだん同じような処理をしているところが見えてきます。
同じ処理をしているのはどこでしょう?
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文を何度も書かなくて良いように修正して見てください。テストクラスで上のように、この値を渡したらこー返ってくる。というのを確認するメソッドがあれば、修正しても問題がないことをすぐに確認できます。
処理の実行するサンプルコードです。
そして、テストクラスです。
追伸
リファクタリング(メソッドで処理を分割しただけ)の後にテストを実行して見ました。
JUnitを使う
上記のように「メソッドを作る」のは良いけど作ったメソッドがちゃんと動くか確認をしたいところです。でも、既存のソースを変更したりするのは「イヤ!」
そのために「JUnit」があります。使い方は下の動画を参照ください。
JUnitの設定
依存関係の追加
JUnit実行サンプル
でわでわ。。。