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

イントロダクション

前回は、四則計算を行うプログラム(ゲームループ付き)を作成しました。

しかし問題が。。。

このプログラムには致命的なバグがあります。これは計算結果を代入する変数が「int型」のため割り算の結果も整数になっていることです。本当は「少数」の答えが入るはずです。
つまり4 / 3 = 1.33333 ...の時に答えが「1」というのは間違いで、「1.33333 ...」というのが正しいということです。

ここでJUnit

上ような細かい部分に関しては、Javaに長く触っている人間(自分)でもよくわかっていない部分があります。
それは、「4>それは、「4 /3」の答えはdouble型で表示したらどうなるか?です。
なのでテストして見ます。「テストクラス」という言葉を前回使用しましたが、その部分には触れませんでした。
前回作成したテストクラスはジッソしたクラスと同じ名前になっています。名前になっています。これはよろしくないので以下のように作成しました。そして小数点で表示されない原因を探るべくJUnitテストを実行しました。

JUnitクラス

色々試した結果「割り算を行うときには(答えが小数点になるときは)」計算する値も小数点で計算する必要がある」という結論に至り、「割り算のときは数値を小数(double)で扱う」という仕様を追加することにしました。以下のようなコードになるということです。

// 割り算の場合
double sahenDouble = sahen;
double uhenDouble = uhen;
ansDouble = sahenDouble  / uhenDouble ;

つまり、割り算のときは「小数」を使用するということです。
そしてそれをコードにしたのがGitにアップしてあります。初めのコードと比較された形で閲覧することができると思います。

リファクタリング準備

そして、ソースが汚いのでこれを綺麗にしてやる必要があります。そのために必要なテクニックが「メソッドを作成する」です。「え?そんなのわかるけど?」と思った方はスキありで一本取られます(笑)

メソッドの作り方

先ほどの通りに「メソッドの書き方」は今までに説明しているのでわかると思います(基準をこのブログ記事を読んで学んでいる人に合わせるので。。。)。

どーゆーことか?

「メソッドを作るのはなぜか?」という問いに答えるということになります。現状のコードは汚いです。
何を持って「キレイ」「キタナい」の判断をするのか?は今後理解して行けば良いと思いますが、現状では「同じようなコードを何度も書いている」というところが「キタナい」というとこに着眼して話を進めます。というか問題(クエスチョン)にしようと思います。

問題

ここには記載せずGitにあるソースの話をします。switch文が何度も出てきているのでこれをなんとかしたいと思っています。どーしたら良いでしょうか?

ヒント:メソッドを作れば良いのです。

でわでわ。。。



Java Basic

  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 〜テストスイートの作り方〜