Java | 早期リターン(ガード節)のメリットと注意点

Java Java
スポンサーリンク

「早期リターンを使わない場合」と「使った場合」の比較

早期リターン(ガード節)は、コードの読みやすさを大きく改善するテクニックです。ここでは同じ処理を「使わない場合」と「使った場合」で比較してみましょう。


早期リターンを使わない場合(ネストが深い)

public void processUser(User user) {
    if (user != null) {
        if (user.isActive()) {
            if (user.hasPermission("ADMIN")) {
                System.out.println("管理者ページへアクセスできます");
            } else {
                System.out.println("権限がありません");
            }
        } else {
            System.out.println("ユーザーは非アクティブです");
        }
    } else {
        System.out.println("ユーザーが存在しません");
    }
}
Java

👉 ネストが3段階になり、「どこで何を判定しているか」を追うのが大変。
条件が増えるほどインデントが深くなり、可読性が落ちる。


早期リターンを使った場合(ガード節)

public void processUser(User user) {
    if (user == null) {
        System.out.println("ユーザーが存在しません");
        return;
    }
    if (!user.isActive()) {
        System.out.println("ユーザーは非アクティブです");
        return;
    }
    if (!user.hasPermission("ADMIN")) {
        System.out.println("権限がありません");
        return;
    }

    System.out.println("管理者ページへアクセスできます");
}
Java

👉 異常系を先に処理して即終了するので、残りは「正常系」だけがスッキリ残る。
読み手は「このメソッドは何をしたいのか」を一目で理解できる。


読みやすさの違い

項目早期リターンなし早期リターンあり
インデント深くなりがち常に浅い
正常系の見やすさネストの奥に隠れる最後にまとまって見える
異常系の扱いelseの中に埋もれる上から順に「ガード」として並ぶ
バグのリスクelseの抜け漏れが起きやすい条件ごとに即終了なので明確

まとめ

  • 早期リターンなし: ネストが深くなり、正常系が見えにくい。
  • 早期リターンあり: 異常系を先に処理して、正常系が最後にまとまるので読みやすい。
  • 実務では「入力チェック」「認証処理」「APIレスポンス」などで早期リターンを使うと、コードの意図が明確になり保守性が上がる。
Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました