Takunojiのプログラミング・プレイグラウンド(遊び場)

「プログラミングのススメ」と学習した結果身につくもの、アイディアを実現するために何をしたら良いか?の答えが出せるようになります。

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」の文字列を渡します。 そして、想定通りの結果が得られる事を確認しながら修正(リファクタリング)する。作成したコードはこちらにあります。

やり方

  1. プログラム(コード)をゆっくりと眺め、同じようなコードを探す
  2. 同じようなコードをメソッドに切り出す
  3. 切り出したメソッドをテストして問題がないことを確認する

実行サンプル

ここの記事に記載しました。動きとしてはこんな感じです。 記載内容に関して、リファクタリングを行う手順とコード、テストクラスの作成方法、及びサンプルコードを記載しています。