リファクタリング機能を学ぼう! Javaコース初級 基礎編Day11&12「変数、値の取り扱い、簡単な計算、入出力処理」

デイトラJava
ハック
ハック

こんにちは!運営者のハックです。

今回は「Javaコース初級 基礎編Day11&12『変数、値の取り扱い、簡単な計算、入出力処理』」の学習再挑戦について紹介します。

Day11 変数、値の取り扱い、簡単な計算

Day11では変数や簡単な計算についての復習をしました。この辺りの基礎文法はWeb制作初級編Day13~15の記事で詳しく解説しています。

また、データ型の種類についてはJavaコース初級編Day7&8で詳しく解説しています。

モナ
モナ

計算の説明は後日「JavaSilver試験対策編」で紹介しようと思っています。

このままだとDay11の学習内容で紹介するものがなくなっていまうため、変数の名前を変更する時に重要なリファクタリング機能について紹介します。

変数の名前を変える時はリファクタリング機能を使おう

画像のコードのように、変数名「player」を「p」に変更する場合、変数playerからpに変わっていない部分は赤字でコンパイルエラーが表示されるので、該当の部分を変数pに変更すれば済みます。

しかし、以下の画像のように、playerが二人いるパターンだとどうでしょうか。

ねこ奈
ねこ奈

文法上は間違いではなから、コンパイルエラーにならないのにゃ。

このままじゃ実行エラーになっちゃうのにゃ。

モナ
モナ

このような変数名変更による変数名不一致エラーを防ぐため、IntelliJ IDEAの機能である「リファクタリング」機能を使いましょう。

変更したい変数を右クリックすると左画像のようなメニューが開きますので、そこから「リファクタリング」を選択します。

選択後のメニューの中から「名前の変更」を選択し、変数名を変更します。

そうすると、該当の変数が使用されている箇所に緑色のマーカーが付き、名前を変更すると他の箇所の変数も変更後の名前に変わります。これはクラス内だけでなく、他のクラスで使われている変数も変更されるため、リファクタリングで名前を変更することによって変数の変更漏れを防ぐことが可能です。

モナ
モナ

リファクタリング機能は他にも「変数の導入」「メソッドの抽出」など、色々と使用します。

今のうちから慣れていきたい機能ですね!

Day12 入出力処理

入出力処理は、テキストファイルなどに内容を出力したり、逆にファイルに書かれてある内容を読み込んで出力したりする処理のことです。

モナ
モナ

デイトラ講師によると、『入出力処理は実際にはデリケートな処理で、今回のような「Javaの基本機能で何とかやる」というケースは実は少なく、フレームワークが持っている機能を使った方が、安全かつ便利なので、そちらを使います、』とのことだそうです。

public void onPlayerToggleSneak(PlayerToggleSneakEvent e) throws IOException {
…
if(count % 2 == 0){
…
        Path path = Path.of("fireWork.tet");
                Files.writeString(path, "たーまやー");
                p.sendMessage(Files.readString(path));
               }
        count++;
    }
  • 「throws IOException」「IOException」はファイル読み書きやネットワーク通信など、入出力操作で何か問題が発生した際に発生する例外であり、throwsキーワードを使うことで、そのメソッド内で例外が発生した場合に、それを呼び出し元に伝播させることができます。
  • 「Path path = Path.of(“fireWork.txt”);」…「Path.of(“fireWork.txt”)」によって、カレントディレクトリ(このコードが実行されているディレクトリ)に「fireWork.txt」という名前のファイルへのパスを表すPathオブジェクトを生成します。
  • 「Files.writeString(path, “たーまやー”);」…「Files.writeString」メソッドを使用して、先ほど生成したPathオブジェクトが指す「fireWork.txt」ファイルに「たーまやー」という文字列を書き込みます。もしファイルが存在しなければ新しく作成され、存在する場合は内容が上書きされます
  • 「p.sendMessage(Files.readString(path));」…「Files.readString(path)」メソッドによって、「fireWork.txt」ファイルから文字列を読み込みます。このメソッドは、ファイルの内容を一度に全て読み取り、その内容を文字列として返します。「p.sendMessage(読み込んだ文字列)」により、読み込んだ文字列(この場合は「たーまやー」)をプレイヤーにメッセージとして送信します。
ねこ奈
ねこ奈

たーまやー。

後でMinecraftのファイルを見たら「fireWork.txt」ができていたのにゃ!

「fireWork.txt」をVSCodeで開くと「たーまやー」という文字列が書き込まれていることを確認できました。

まとめ  基礎ができていないと応用はできない

今回は変数、値の取り扱い、簡単な計算、入出力処理について復習しました。

ハック
ハック

リファクタリング機能については今後多用します。

その時になぜリファクタリングが必要なのか分かっていないと、講義の内容が理解できず、ただコードを写して終わりになってしまいます。

基礎ができていないと応用はできません。今一度基礎部分を再確認しておきます。

コメント

タイトルとURLをコピーしました