おすすめアイテムをいくつか紹介

広告ブロックがONになっていると表示されないことがあります。

【Java入門】無駄なコードをスッキリ整理!よくある15の書き方ミスと改善方法

お疲れ様です。
はるさらと申します。

Javaを学び始めたばかりの頃、
意識せずに冗長なコードを書いてしまうこと
よくあります。

コードは「動けばいい」だけではなく、
「読みやすさ」や「メンテナンス性」も
とても大切です。

この記事では、
ついやってしまいがちな冗長な書き方と、
それを改善したスッキリしたコード
15個紹介します。

Javaコードを効率的に保つために、
冗長な部分を解消することが非常に重要です。

全て覚えなくても
一度目を通しておけばコーディング時に
『あれ?もう少しスッキリ書けないかな?』
といった目が養われていくため
少しでも参考になれば幸いです。

※インデントが上手く行っていない箇所は
目をつぶっていただけると幸いです。。。


◆条件分岐での冗長な比較

冗長な例

if (flag == true) {
 System.out.println(“実行します”);
}

スッキリ改善

if (flag) {
 System.out.println(“実行します”);
}

解説
boolean型はそのまま評価できます。
== trueは不要です。

◆同じ処理を複数回書く

冗長な例

if (score >= 60) {
 System.out.println(“合格”);
} else {
 System.out.println(“不合格”);
}

スッキリ改善

System.out.println(score >= 60 ? “合格” : “不合格”);

解説
三項演算子を使うことで簡潔になります。

◆不要なインスタンスの生成

冗長な例

String str = new String(“こんにちは”);

スッキリ改善

String str = “こんにちは”;

解説
文字列はリテラルで代入できます。newは不要です。

◆無意味な初期化

冗長な例

int count = 0;
count = items.size();

スッキリ改善

int count = items.size();

解説
一時的な初期化は省いて構いません。

◆無駄なforループの使用

冗長な例

for (int i = 0; i < list.size(); i++) {
 System.out.println(list.get(i));
}

スッキリ改善

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

解説
拡張for文(for-each)を使いましょう。

◆nullチェックの冗長な書き方

冗長な例

if (str != null && !str.equals(“”)) {
 System.out.println(str);
}

スッキリ改善

if (str != null && !str.isEmpty()) {
 System.out.println(str);
}

解説
空文字チェックにはisEmpty()を使いましょう。

◆長すぎるif-else文

冗長な例

if (type == 1) {
 System.out.println(“小学生”);
} else if (type == 2) {
 System.out.println(“中学生”);
} else if (type == 3) {
 System.out.println(“高校生”);
} else {
 System.out.println(“不明”);
}

スッキリ改善

switch (type) {
 case 1 -> System.out.println(“小学生”);
 case 2 -> System.out.println(“中学生”);
 case 3 -> System.out.println(“高校生”);
 default -> System.out.println(“不明”);
}

解説
Java 14以降ならアロー構文でシンプルに書けます。

◆無駄な変数の使用

冗長な例

int total = price * quantity;
System.out.println(total);

スッキリ改善

System.out.println(price * quantity);

解説
再利用しないなら、直接処理に入れましょう。

◆try-catchでの空のcatchブロック

冗長な例

try {
 Files.readAllBytes(Paths.get(“sample.txt”));
} catch (IOException e) {
}

スッキリ改善

try {
 Files.readAllBytes(Paths.get(“sample.txt”));
} catch (IOException e) {
 e.printStackTrace();
}

解説
空のcatchはNG。最低限のログ出力は必要です。

◆不要なラッパークラスの使用

冗長な例

Integer a = Integer.valueOf(10);
int b = a.intValue();

スッキリ改善

int b = 10;

解説
ボクシング・アンボクシングが不要な場合は基本型でOK。

◆不要なtoStringの呼び出し

冗長な例

System.out.println(str.toString());

スッキリ改善

System.out.println(str);

解説
printlnは自動的にtoString()を呼びます。

◆booleanの返却での冗長なif文

冗長な例

if (age >= 20) {
 return true;
} else {
 return false;
}

スッキリ改善

return age >= 20;

解説
比較の結果をそのまま返しましょう。

◆サイズチェックでの冗長な書き方

冗長な例

if (list.size() != 0) {
 // 実行処理
}

スッキリ改善

if (!list.isEmpty()) {
 // 実行処理
}

解説
isEmpty() を使った方が明快です。

◆コンストラクタでの重複処理

冗長な例

public class User {
 private String name;
 private int age;

 public User() {
  this.name = “名無し”;
  this.age = 0;
 }

 public User(String name) {
  this.name = name;
  this.age = 0;
 }
}

スッキリ改善

public class User {
 private String name;
 private int age;

 public User() {
  this(“名無し”);
 }

 public User(String name) {
  this.name = name;
  this.age = 0;
 }
}

解説
共通処理はthis(…)でまとめましょう。

◆リスト初期化時の冗長な型指定

冗長な例

List<String> list = new ArrayList<String>();

スッキリ改善(Java 7以降)

List<String> list = new ArrayList<>();

解説
ダイヤモンド演算子<>で型推論を活用できます。

◆ まとめ

Javaは型が明示的なぶん、
つい冗長なコードを書いてしまいがちです。

しかし、無駄な記述を省くことで、
可読性や保守性は大きく向上
します。

今回紹介したような改善ポイントを
少しずつ意識して、
より良いコードを書けるようになっていきましょう!

どなたかのお役に立てれば幸いです。
それではまたー!!

ABOUT US
harusara
はるさらと申します。現在はSIerとして働いており、このブログにIT系の備忘録を気ままに残しております。少しでも多くの方に役立てば幸いです♪ 連絡をいただける場合はサイドバーのお問い合わせかTwitterのDMよりお願いいたします。