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

Java Java
スポンサーリンク

総合サンプルコード:入力チェック+外部API呼び出し+レスポンス返却

ここまでの「早期リターン」「例外処理」「テスト設計」のベストプラクティスを組み合わせた、実務でよくある APIリクエスト処理 の例をまとめます。


サンプルコード

public class UserController {

    public Response getUserProfile(Request req, ExternalApi api) {
        // --- 早期リターンで入力チェック(想定内の異常) ---
        if (req == null) {
            return new Response(400, "リクエストが空です");
        }
        if (req.getUserId() == null || req.getUserId().isEmpty()) {
            return new Response(400, "ユーザーIDが必要です");
        }

        // --- 例外処理で外部要因をカバー(想定外の異常) ---
        try {
            UserProfile profile = api.fetchProfile(req.getUserId());
            if (profile == null) {
                return new Response(404, "ユーザーが見つかりません");
            }
            return new Response(200, "成功", profile);

        } catch (IOException e) {
            return new Response(503, "外部サービスエラー: " + e.getMessage());
        } catch (Exception e) {
            return new Response(500, "予期せぬエラー: " + e.getMessage());
        }
    }
}
Java

テスト設計の観点

  • 入力チェックテスト
    • req = null → 400エラー
    • userId = "" → 400エラー
  • 正常系テスト
    • 正しい userId → 200成功+プロフィール返却
  • 外部要因テスト
    • APIモックで IOException を投げる → 503エラー
    • APIモックで予期せぬ例外を投げる → 500エラー

👉 早期リターンで「業務ロジックの異常系」が明確、例外処理で「外部要因の異常系」が分離されているので、テストケースを整理しやすい。


まとめ

  • 早期リターン: 入力チェックや業務ロジックの条件不一致を即終了。
  • 例外処理: 外部APIやシステム的な失敗を安全にキャッチ。
  • テスト設計: 異常系と正常系を分けて考えることで、ユニットテストが明確になる。

✅ このように「早期リターン+例外処理+テスト設計」を組み合わせると、読みやすく・安全で・テストしやすいコードが書けます。

Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました