早期リターン+例外処理を「テストしやすいコード設計」にする方法
ここまでで「早期リターンは業務ロジックの整理」「例外処理は外部要因の失敗対応」に使うことを見てきました。
実務では テストのしやすさ も重要です。早期リターンと例外処理を組み合わせると、ユニットテストや統合テストが書きやすくなります。
ポイント
- 早期リターンで異常系を明示
→ テストケースごとに「この条件なら即終了」とわかりやすい。 - 例外処理で外部要因を分離
→ 外部サービスやファイル操作はモック化しやすい。 - 戻り値やレスポンスを統一
→ テストで「期待される結果」を比較しやすい。
実務的サンプル:ユーザー登録サービス
public class UserService {
public Response registerUser(String name, String email, Database db) {
// --- 早期リターンで入力チェック ---
if (name == null || name.isEmpty()) {
return new Response(400, "名前を入力してください");
}
if (email == null || !email.contains("@")) {
return new Response(400, "メールアドレスが不正です");
}
// --- 例外処理で外部要因をカバー ---
try {
db.save(name, email); // DB保存処理
return new Response(200, "登録成功");
} catch (SQLException e) {
return new Response(500, "データベースエラー: " + e.getMessage());
}
}
}
Javaテストしやすい理由
- 入力チェックのテスト
name = ""→ 400エラーemail = "abc"→ 400エラー
- 正常系のテスト
- 正しい入力 → 200成功
- 外部要因のテスト
- DBモックで例外を投げる → 500エラー
👉 早期リターンで「業務ロジックの異常系」が明確、例外処理で「外部要因の異常系」が分離されているので、テストケースを整理しやすい。
まとめ
- 早期リターン: テストで「条件不一致」を簡単に確認できる。
- 例外処理: 外部要因をモック化して異常系を再現できる。
- 組み合わせ: 「業務ロジック」と「外部要因」を分けることで、テストが明確になる。
✅ 実務では「早期リターンで業務ロジックを整理」「例外処理で外部要因を分離」することで、テストしやすく保守性の高いコードが書けます。
