イントロダクション
前回までに、JavaFXによるアニメーションの作成など基本的なことをやってきました。
これで、Javaでスマホアプリを作る準備ができたので、実装してみました。
ver1.0
このレベルまで作成しました。
それは、スマホアプリでじゃんけんゲームを作ろうと思ったからです。そして、現状ではここまで作ることができました。
作成中
とりあえずは「動く」「じゃんけんをしているように見える」というところまで来たのですが、以下のような問題があります。
- 「じゃんけんぽん」で正常な「じゃんけん」にならない
- 何回かじゃんけんをしていると押下したボタンと違うて(イメージ)が表示されている
- 「じゃんけんぽん」の「ポン」が表示されない
ぱっと見で自分が認識している問題がこれだけあります。
リファクタリングする
これらの問題を解決するにはどうしたら良いか?これを考えて見たのですが、自分の出した答えは上記の通りです。「リファクタリング」です。そして理由は以下の通り
- コードが汚いので、想定通りに動いていない原因がわかりづらい
- 全ての(じゃんけんの)処理を1つのファイルに記載しているので「オブジェクト指向」していない。つまり「余計なもの(処理)がたくさんある」状態
- 問題のあるコードと問題のないコードの切り分けが面倒
- 次に改修して、新しいことをやろうとするときに使えないコード
- 「4」と同様に拡張したり、サンプル(参考にする)コードにならないので次につながらない
- 例外(エラー)処理が不適切なので、デバックがしづらい→保守する人がすごく苦労する
- 「このまま汚いコードでリリースする」=「汚いコードが正しい」となる ※個人でやる場合は問題ない?が企業など大きなプロジェクトでやると改修コストがものすごいことになる(コード解析、修正、テスト→修正したコードが問題なく動く動く確認をするのに人的コストが沢山必要になる)
挙げればキリがないのでここまでにしますが、まとめると「みんなが不幸になる」ということです。
みんな「不幸」になりたくないですよね(笑)、平和のために頑張りましょう!
とりあえず自己レビュー
仕事でもそうですが、人に作成したコードをレビューしてもらう前に自己レビューをやります。「本来は。。。」などと言ってレビューをやらないケースが世間にはありますが、自分の経験上、レビューした方が作業量が少なくて済むように思います。
自己レビューをする
確認ではないですが、自分流のレビュー方法です。
- とりあえずコードを眺める
- 直感的な感想をリストアップする(感覚で良い)
- コードを見て、わからない(理解できない、気に入らない)部分を理解(ピックアップ)する
- 変数名の意味を確かめる→変数の用途と名前がリンクしているか?
- 作成物(コード)の構成を見直す→プログラムの構成が複雑になっていないか?
- 作成物(コード)が整理されているか確認→どの処理がどこにあるかすぐにわかるか?
- 無駄な処理がないかどうか確認→余計な変数を使用していないか?処理(コード)を少なくすることはできないか?
上記のような部分を見直します。そして大切なことは
どのように修正するのか?ということです。理由に関しては語るに及ばずだと思います。
そんなわけでソースを眺めます。コードが420行あるのでリンクにします。部分的にコードをピックアップします。。。
問題1「コードが長い」
上記に記載したようにコードが長いので、レビューワー的に「見辛い」「見る気がなくなる」。。。などの問題が出ます。単純に「汚ねぇな。。。」って思うコードは見るのに時間がかかるから「面倒だな」と思うのでやる気が萎えます。
問題1の対策
この部分の対策としては「クラス分け」を行おうと思います。そして現状のクラス構成は以下になります。
・JankenGame.java → じゃんけんゲームを起動します。GLUONで自動生成されたクラスなので、JavaDocコメントがないですが、23行のコード
・BasicView.java → じゃんけんゲームのタイトル画面クラスです。これもGLUONで自動生成ですが、多少修正したのでコメント(JavaDocも)付きで73行のコード
・TestingView.java → じゃんけんゲームの本体部分のクラスです。今回のリファクタリング対象クラスになります。テストしながら作成したので420行のコード
そして「じゃんけんゲーム」を起動するのに必要な処理は以下の通りです。
- タイトル画面の表示「BasicView.java」で行なっています。これはEclipseにインストールしたGLUONプラグインで自動生成したものを、ほぼそのまま使用しています。
- タイトル画面から「スタート」ボタンを押下した時に起動する画面の表示「TestingView.java」で行なっています。以下の処理はこのクラスで実装しています。
- レイアウトクラスを使用して「Top」「Mid」「Btn」「Bottom」の表示領域を作成しています(VBoxとHBox使用)
- Topに「じゃんけん。。。」などの文字を表示、Midにじゃんけんの手(Image)及びアニメーションの表示、Btnに「勝負」と「もう一度」のボタン、Bottomにユーザーの手を入力するボタン「ぐー、ちょき、ぱー」を設定
- 「4」の各ボタンにボタン押下した時のアクション処理を実装
- じゃんけんの勝敗判定処理を実装
- 「じゃん〜ポン」のアニメーションを実装(Timer、AnimationTimer)
- アニメーション終了時の処理
とりあえずはここまでにします。
[rakuten ids="goldstar:10030213"]
関連ページ一覧
- JavaFX チュートリアル〜今度こそ、初めてでも大丈夫:Label〜
- JavaFX チュートリアル〜今度こそ、初めてでも大丈夫2:Label〜
- JavaFX チュートリアル〜今度こそ、初めてでも大丈夫3:Button〜
- JavaFX チュートリアル〜今度こそ、初めてでも大丈夫4:RadioButton〜
- JavaFX チュートリアル〜今度こそ、初めてでも大丈夫5:ToggleButton〜
- JavaFX チュートリアル〜今度こそ、初めてでも大丈夫6:CheckBox〜
- Eclipse Android〜Gluonでアプリを作る6: アニメーションを作る準備〜
- Eclipse Android〜Gluonでアプリを作る7: 木琴アプリの解析〜