varを使ったコードと使わないコードを混ぜて書いて、どちらが読みやすいか比較する
では、「varを使ったコードと使わないコードを混ぜて書いて、どちらが読みやすいか比較する」課題を紹介します。
練習課題:varあり/なしの比較
課題1:リストの処理
次の2つのコードを見比べて、どちらが読みやすいか考えてみましょう。
A. varを使わない場合
import java.util.ArrayList;
class Compare1 {
public static void main(String[] args) {
ArrayList<String> fruits = new ArrayList<String>();
fruits.add("Apple");
fruits.add("Banana");
for (String fruit : fruits) {
System.out.println(fruit);
}
}
}
JavaB. varを使った場合
import java.util.ArrayList;
class Compare1 {
public static void main(String[] args) {
var fruits = new ArrayList<String>(); // 型が長いので省略できる
fruits.add("Apple");
fruits.add("Banana");
for (var fruit : fruits) { // String型と推論される
System.out.println(fruit);
}
}
}
Java👉 考えるポイント
- Aは型が明示されていて分かりやすい
- Bはコードが短くスッキリしている
課題2:Mapの処理
A. varを使わない場合
import java.util.HashMap;
import java.util.Map;
class Compare2 {
public static void main(String[] args) {
HashMap<String, Integer> prices = new HashMap<String, Integer>();
prices.put("Apple", 100);
prices.put("Banana", 200);
for (Map.Entry<String, Integer> entry : prices.entrySet()) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}
}
}
JavaB. varを使った場合
import java.util.HashMap;
class Compare2 {
public static void main(String[] args) {
var prices = new HashMap<String, Integer>(); // 型が長いので省略
prices.put("Apple", 100);
prices.put("Banana", 200);
for (var entry : prices.entrySet()) { // Map.Entry<String, Integer> と推論される
System.out.println(entry.getKey() + " : " + entry.getValue());
}
}
}
Java👉 考えるポイント
- Aは「entryがMap.Entry型」とすぐ分かる
- Bは短く書けるが、型が分かりにくいかもしれない
課題3:計算の型
class Compare3 {
public static void main(String[] args) {
int a = 10;
double b = 3.14;
var c = a * b; // これは何型になる?
System.out.println(((Object)c).getClass().getName());
}
}
Java👉 実行すると java.lang.Double と出力されます。
考えるポイント
varを使うと型が省略できるが、推論結果を理解していないと混乱する
まとめ
varは「型が長いとき」や「for文」で特に便利- ただし「型が分かりにくいとき」は明示的に書いた方が親切
- 読みやすさは状況次第。チーム開発ではルールを決めて使うのがおすすめ
