こんにちは。コードキャンプ株式会社が運営するプログラミングスクール「CodeCamp(コードキャンプ)」でプログラミングを学習している高橋です。
私が受けているコースは「Javaマスターコース」。Javaは、数あるプログラミング言語の中でも、日本国内において、特に求人案件数が多い言語です。CodeCamp(コードキャンプ)の「Javaマスターコース」では、Javaエンジニアには必須の「オブジェクト指向」から、「JSP/サーブレット」「データベース連携」まで、Javaを用いてWebアプリケーションを開発するために必要な知識を基礎から実践まで学びます。
受講回数は2ヶ月(20回)、4ヶ月(40回)、6ヶ月(60回)の3つから選べます(今回は2ヶ月間受講します)。
それでは、2018年11月12日に受講した、Codecamp(コードキャンプ)「Javaマスターコース」第7回目の学習内容をレビューします。
目次
Javaマスターコース7日目|CodeCamp(コードキャンプ)
本日の講師:勝田郁郎先生
普段はSOHOにてWEB系、ソーシャルゲーム関連の開発を行っております。
実務に基づいた使えるスキルを丁寧に解りやすくお伝えいたします。
現在学んでいる箇所では無い箇所の質問も、是非して下さい。
どんな質問を何度して頂いても構いません。
理解し、使いこなせるようになるまで、お手伝いさせて頂きます。
いっしょに頑張りましょう。
第7回目のレッスンで学んだことは以下の内容です。
CodeCamp(コードキャンプ)Javaマスターコース第7回目のレッスン内容
-
第16章課題の添削
今回は、受講までにJavaマスターコース第16章の課題である「Big or Small」ゲームの制作に取り組みます。基礎編のレッスンは今回で最後になります。
1.第16章課題の添削
Java基礎OL最終課題 「Big or Small」ゲーム作成(抜粋)
一応動作はするのですが、キレイなコーディングになっているか見ていただけますでしょうか。
Gameクラスでチップの枚数とカードを管理しており、初期化したのち、ゲームの処理に入ります。
Mainクラス
ただ、例えば高橋さんが後輩に「Mainクラス書いといて~!」って作らせたときに、後輩が「game.exit = 0」と書いて、条件式でなく、代入にしてしまったりしたらどうでしょう。
それではここはgetterに変えておきましょう。
getterに変えた
メソッドの中身はこんな感じです。
カードを引くメソッドが二つある
引数を使って、どっちのカードに代入するかを書けばそういうプログラムが書けそうですね。
引数によりカードを識別する
同じような処理が2つに分かれていると、後でメンテナンスが必要になったときに大変になってしまいます。
さて、次に進みましょう。大小の回答を入力する部分を見てみましょうか。
0か1を入力するメソッド
0か1を入力するだけなのですが、例外処理のため、結構長い行数になっていますね。同じようにYES/NOを入力させるようなメソッドはほかにも何回かでてきました。
試しに作ってみましょう。
入力用の新しいクラス
フィールドにアクセスしないため、インスタンス化しなくてもよい、staticなメソッドにできています。
すっきりしました
別のところでも使うものはクラス化しておけば便利に使うことができますね!メンテナンスの際にも便利そうです。
ほかのメソッドも同様に短くなった
judgeクラス。画面下もスートの比較について場合分けが続いている
Gameクラスにあるこのjudge()メソッドでは、まず先に引いておいた二枚のカードの数値を比較します。次に、数値が同じだった場合には比較したcompareNum(Card)メソッドから9が返されるため、その後switch文により、再度compareSuit(Card)による大小比較を行います。
スートの比較も含めて、カードを比較するcompareCard()メソッドを使って以下のように書き換えてみましょう。
書き換えたコード
でも、どのクラスにどのメソッドを書くのかという判断は結構迷いますね。
前の書き方ですと、カードのクラスでは数値の比較とスートの比較でしかメソッドをもっていませんでしたが、このように改修したことで、より大きなくくりまでカードのクラスで把握できるようになりました。
そのほかは大丈夫そうでしょうか。
山札をつくるコンストラクタ
この変数が何をしているのかわからなくなってしまいます。
書き換えたコンストラクタ
私の師匠の受け売りですが、「一番良いのはコメントを書くこと。次に良いのがコメントを書かなくてもコードがコメントの役割をしているソースコード。」というのがあります。ソースコードが日本語のように読めるような形にしておくのが良いですね。
こういった細かいところがプログラムを難読化させるかどうかということに関わってきます。
確かに、4や13という数値の持つ意味がこれならぱっとわかりますね。ほかの人が見ても分かりやすいコーディングを心がけていきたいと思います!
ところで、例えばこのカードクラスと山札クラスがあると、どんなトランプゲームでもできそうですね。
先ほど作成したInputManagerクラスもメソッドを足していけば入力に関することは何でもできそうですね。そうやって機能を足していった便利なクラスをどれだけ今まで作ってきたかということが大事です。
そういったときに、前の仕事で作ったプログラムを利用すれば、作る時間を短縮することができて、仕事の効率を上げることができます。
とはいえ、最初からそれをやると思うので、やっていくうちによく使ったり、「このあたりはまとめておくと便利そうだな」と思ったときにクラスとしてまとめたりして、試行錯誤してみてください!
Javaマスターコース7日目の成果と課題|CodeCamp(コードキャンプ)
第7回を受講して学んだことと、次回に向けた課題について整理します。
- プログラムの設計について
- 読みやすいコーディングについて
今回は最終課題の制作を通じて、プログラムの中でどうクラスを設計していくかということと、ほかの人が読んでも分かりやすいコーディングについて学びました。
授業では基礎編の最後の課題を終えることができたので、次回からは応用編に取り組むこととなります!
Javaマスターコース7日目の感想|CodeCamp(コードキャンプ)
基礎編の最終課題、とても難しく時間もかかりましたが、自分でどんなクラスが必要なのかを考えて組み上げました。最後に動いたときの達成感はたまりません(笑)
今回は簡単なトランプゲームでしたが、今まで習ったことを応用すればもっと複雑なゲームも作ることができるかなと思います。今回一つ完成品を作ったことで、これからの創作活動にモチベーションが上がりました!
CodeCamp(コードキャンプ)の「Javaマスターコース」とは
CodeCamp(コードキャンプ)の「Javaマスターコース」は、Javaエンジニアになるために必要な知識を基礎から実践まで学べるコースです。
>>無料体験レッスン受講で10,000円OFFクーポンプレゼントキャンペーン実施中
CodeCamp(コードキャンプ)「Javaマスターコース」の料金
2ヶ月 |
|
4ヶ月 |
|
6ヶ月 |
|
現在は全く別の業界で働いていますが、今後はシステムエンジニアとしてのキャリアに進もうと思っています。その準備として、JavaマスターOLコースでJava開発の基礎を学んでいきます!