Java | Java 10から使える var を使った変数宣言(型推論)について

Java Java
スポンサーリンク

型推論(var)のベストプラクティス集

Java 10 以降で使える var(型推論) は便利ですが、使い方次第でコードが読みやすくも読みにくくもなります。
ここでは、初心者が迷わない「ベストプラクティス(おすすめの使い方)」 をわかりやすく紹介します。


1. 「型が明らかなとき」だけ使う

良い例

var name = "Tanaka";     // 右辺が明らかに String
var count = 10;           // 右辺が明らかに int
var list = new ArrayList<String>();  // 右辺に型が見える
Java

悪い例

var result = getData();   // getData() が何を返すかわからない
Java

💬 解説

var の目的は「冗長な型宣言を省くこと」。
右辺を見ただけで型が分かる場合にのみ使う のが基本です。
逆に、型が一目でわからないときは「読み手を混乱させる」ので避けましょう。


2. 長くて複雑な型をスッキリ書きたいときに使う

良い例

var map = new HashMap<String, List<Integer>>();
Java

Map<String, List<Integer>> map = new HashMap<String, List<Integer>>();
よりずっと読みやすくなります。

💬 解説

ジェネリクス(<>)で型が長くなる場合、
右辺に型が書かれているので var にしても安全 です。


3. 変数の「意味」を表す名前を付ける

良い例

var userName = "Alice";
var userAge = 25;
var itemList = new ArrayList<String>();
Java

悪い例

var x = "Alice";
var y = 25;
var z = new ArrayList<String>();
Java

💬 解説

var を使うと型が見えなくなる分、
変数名で「何を入れているか」伝えることがより重要 になります。


4. ループや一時変数では積極的に使う

良い例

for (var item : list) {
  System.out.println(item);
}

for (var entry : map.entrySet()) {
  System.out.println(entry.getKey() + " = " + entry.getValue());
}

var sum = a + b;
Java

💬 解説

一時的な変数(ループ変数・中間計算など)はスコープが短く、
「型がすぐわかる」ため var を使うとすっきりします。


5. 明示的な型が必要な場面では無理に使わない

悪い例

var data = process();   // process() の戻り値が分からない
Java

💬 解説

API の利用者やチームメンバーが「data の型が何か」調べないと分からないのは非効率。
読みやすさ・保守性を優先する のがプロの考え方です。


6. var はローカル変数専用。フィールドや引数では使えない

ダメな例

class User {
  var name = "Tanaka";  // フィールドには使えない ❌
}
Java

varメソッド内(ローカルスコープ) でしか使えません。
クラスのメンバ変数(フィールド)やメソッド引数、戻り値には使えない仕様です。


7. コードレビューで混乱しないことを優先する

var を多用すると、型が分かりにくくなることがあります。
チーム開発では次のようなルールを決めておくと良いです。

状況ルール例
型が一目で分かるvar OK
メソッド呼び出しの結果など、型が不明瞭明示的な型を書く
API公開部分(publicな戻り値や引数)明示的な型を書く

8. IDE(Eclipse, IntelliJ)などで型ヒントを活用する

多くのIDEでは、var にマウスを当てると推論された型を表示してくれます。
「読みづらくなる」不安はIDEでカバーできる のもポイントです。


まとめ:初心者向け「varの黄金ルール」

Noポイント理由
型が明らかなときだけ使う可読性を保つ
複雑な型を簡潔に書きたいときに使うコードをすっきり
意味のある変数名を付ける型が見えない分、名前が重要
一時変数・ループ変数には積極的に使うスコープが短く安全
フィールド・引数・戻り値には使わない仕様で禁止されている
チームでルールを統一する混乱を防ぐ

おすすめ練習

以下のコードを2パターンで書いてみましょう。

  • ① 全て明示的に型を書く
  • var を使って簡潔に書く
var list = new ArrayList<String>();
list.add("Apple");
list.add("Banana");
for (var item : list) {
  System.out.println(item);
}
Java

実際に自分で両方書いて比較すると、
「どこまで var を使うと読みやすいか」が実感できます。

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