Back_End/Java

얼리 리턴 패턴(Early Return Pattern) 이란?

10Biliion 2025. 2. 14. 15:18

 

1. 얼리 리턴 패턴이란?

얼리 리턴 패턴(Early Return Pattern)은 함수나 메서드에서 불필요한 코드 실행을 줄이고, 조건을 만족하지 않을 경우 즉시 반환(return)하여 코드의 가독성과 유지보수성을 높이는 기법이다.

일반적으로 if-else 블록을 중첩하여 처리하는 방식보다 조건을 먼저 검사하고 빠르게 반환하는 방식이 더 직관적이고 오류를 줄이는 데 도움이 된다.

2. 얼리 리턴 패턴의 장점

가독성 향상

  • 불필요한 중첩을 줄여 코드가 더 간결하고 읽기 쉬워진다.

유지보수 용이

  • 조건별로 빠르게 리턴하여 코드 흐름을 단순화할 수 있다.

불필요한 연산 방지

  • 특정 조건이 만족되지 않으면 즉시 종료하여 불필요한 연산을 방지할 수 있다.

3. 일반적인 코드 vs 얼리 리턴 패턴 적용 코드

❌ 중첩된 if-else 방식

public String getUserRole(User user) {
    if (user != null) {
        if (user.isActive()) {
            if (user.getRole() != null) {
                return user.getRole();
            } else {
                return "UNKNOWN";
            }
        } else {
            return "INACTIVE";
        }
    } else {
        return "NO_USER";
    }
}

위 코드의 문제점은 if 블록이 계속해서 중첩되면서 코드가 길어지고 가독성이 떨어진다는 점이다.

✅ 얼리 리턴 패턴 적용

public String getUserRole(User user) {
    if (user == null) return "NO_USER";
    if (!user.isActive()) return "INACTIVE";
    if (user.getRole() == null) return "UNKNOWN";
    
    return user.getRole();
}

얼리 리턴을 적용하면 중첩 없이 조건을 빠르게 확인하고 반환하므로 코드가 훨씬 간결해진다.

4. 얼리 리턴 패턴의 실제 활용 예시

Spring Boot에서 유효성 검사 시 활용

public ResponseEntity<String> processOrder(Order order) {
    if (order == null) return ResponseEntity.badRequest().body("Invalid order");
    if (order.getItems().isEmpty()) return ResponseEntity.badRequest().body("No items in order");
    if (!order.isPaymentCompleted()) return ResponseEntity.badRequest().body("Payment not completed");
    
    orderService.process(order);
    return ResponseEntity.ok("Order processed successfully");
}

위 코드에서는 order 객체의 유효성을 검사한 후 문제가 있으면 즉시 반환하여 이후 로직이 실행되지 않도록 한다.

반복문에서 얼리 리턴 적용

public boolean containsNegative(List<Integer> numbers) {
    for (int num : numbers) {
        if (num < 0) return true;
    }
    return false;
}

위 코드에서는 음수가 발견되면 즉시 true를 반환하여 불필요한 반복을 방지한다.

 

조건문이 많아지는 경우 얼리 리턴을 적극 활용하면 중첩을 줄여 더 직관적인 코드 작성을 할 수 있다. 하지만 남용하면 코드의 흐름을 파악하기 어려워질 수도 있으므로, 적절한 균형을 유지하는 것이 중요하다.

'Back_End > Java' 카테고리의 다른 글

자바(JAVA) Synchronized  (0) 2025.02.24
자바(Java) Optional 이란?  (0) 2025.02.14
Java의 Comparator vs Comparable  (1) 2025.02.14
자바(Java) 스트림(Stream) 이란?  (1) 2025.02.13
자바의 람다식(Lambda Expression)  (0) 2025.02.12