inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[ 워밍업 클럽 4기 백엔드 ] - Day 4 미션

조희제
0

1. 코드 리팩토링

 

[ 변경 전 ]

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;
}

[ 변경 후 ]

public boolean validateOrder(Order order) {
    if (order.hasNoOrderItems()) {
        log.info("주문 항목이 없습니다.");
        return false;
    }

    if (order.isCustomerInfoAbsent()) {
        log.info("사용자 정보가 없습니다.");
        return false;
    }

    if (order.isInvalidTotalPrice()) {
        log.info("올바르지 않은 총 가격입니다.");
        return false;
    }

    return true;
}

🌱 [ 리팩토링 포인트 ]

 

[ Early Return ]

 

[ 객체 위임 ]

 

[ 부정 연산자 사용x ]

 


📝 2. SOLID

 

SRP : 단일 책임 원칙 ( Single Responsibility Principle )

 

OCP : 개방 폐쇄 원칙 ( Open Closed Principle )

public class OrderController(){
   private final OrderService orderservice = new OrderServiceImpl();
}

OrderController -> OrderServiceImpl 의존
OrderServiceImpl 구현체 변경시 OrderController 코드를 변경 해야 하므로 OCP 위반 ( DI 필요 )

 

LSP : 리스코프 치환 원칙 ( Liskov Substitution Principle )

 

ISP : 인터페이스 분리 원칙 ( Interface Segregation Principle )

 

DIP : 의존 역전 원칙 ( Dependency Inversion Principle )

답변 0