Java Console Game〜リファクタリングLv1〜
イントロダクション
前回は、テストコードを作ることに触れました。早い話が「コードの起動確認をしよう」という事です。やり方としては以下の様になります。
テストクラス
作成するクラスと同じパッケージをtestフォルダの下に作り作成クラス+Testという名前のクラスを作る。これでテストクラスと作成するクラスの区別がつきます。具体的には、下の様に作ります。
作成クラス: src/jp/zenryoku/sample/lv2
テストクラス:test/jp/zenryoku/sample/lv2
リファクタリング
これでリファクタリングの準備が出来ました。リファクタリングの目的は「キレイなコードを書く」です。変更したコードが今迄と同じ様に動くか確認しながらやります。
なので、修正する部分を決めてやる必要があります。今回の修正ポイントは「calculate()」メソッドです。
テストコードを書く
テストコードの目的は、修正したコードが壊れない事を担保する為のものです。
具体的には、これから作成しますが、要件として以下の点に注意します。
1. メソッドの処理結果が全く同じになる
2.何回テストしても結果は変わらない
プログラム設計
今回の修正メソッドは public String calculate(String fomula)
なので、引数のfomulaに入っている文字列が「?」+「+-*/のどれか」+「?」で、?には0〜9の数字一文字が入ります。この部分は正規表現でチェックしているので良しとします。
具体的に
引数に「1 + 1」と入っていた場合、計算して「2」を返却する事を確認するテストコードを作ります。
テストクラスから、テスト対象のメソッドを呼び出し実行します。
メソッドの引数には「1 + 1」の文字列を渡します。
そして、想定通りの結果が得られる事を確認しながら修正(リファクタリング)する。作成したコードはこちらにあります。
やり方
- プログラム(コード)をゆっくりと眺め、同じようなコードを探す
- 同じようなコードをメソッドに切り出す
- 切り出したメソッドをテストして問題がないことを確認する
実行サンプル
ここの記事に記載しました。動きとしてはこんな感じです。 記載内容に関して、リファクタリングを行う手順とコード、テストクラスの作成方法、及びサンプルコードを記載しています。