inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[워밍업 클럽 4기] 백엔드 Day 4. 객체 지향과 SOLID

이든
0

🎯 읽기 좋은 코드 (refactor)

as-is

public boolean validateOrder(Order order) {
    if (order.getItems().size() == 0) {
        log.info("주문 항목이 없습니다.");
        return false;
    } else {
        if (order.getTotalPrice() > 0) {
            if (!order.hasCustomerInfo()) {
                log.info("사용자 정보가 없습니다.");
                return false;
            } else {
                return true;
            }
        } else if (!(order.getTotalPrice() > 0)) {
            log.info("올바르지 않은 총 가격입니다.");
            return false;
        }
    }
    return true;
}

to-be

public class OrderException extends RuntimeException {
    public OrderException(String message) {
        super(message);
    }
}

public boolean validateOrder(Order order) {
    if (order.hasNoItems()) {
        throw new OrderException("주문 항목이 없습니다.");
    }
    
    if (order.hasInvalidTotalPrice()) {
        throw new OrderException("올바르지 않은 총 가격입니다.");
    }

    if (order.isMissingCustomerInfo()) {
        throw new OrderException("사용자 정보가 없습니다.");
    }

    return true;
}

📌 SOLID란 (SRP, OCP, LSP, ISP, DIP)

백엔드 워밍업클럽4기

답변 0