미션 Day4

미션 Day4

  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 (isEmptyOrder(order)) {
        log.info("주문 항목이 없습니다.");
        return false;
    }
    if (hasNoCustomerInfo(order)) {
        log.info("사용자 정보가 없습니다.");
        return false;
    }
    if (isInValidTotalPrice(order)) {
        log.info("올바르지 않은 총 가격입니다.");
        return false;
    }

    return true;
}

private boolean isInValidTotalPrice(Order order) {
    return !(order.getTotalPrice() > 0);
}

private boolean hasNoCustomerInfo(Order order) {
    return !order.hasCustomerInfo();
}

private boolean isEmptyOrder(Order order) {
    return order.getItems().size() == 0;
}

 

  1. SOLID에 대해 나의 언어로 정의하기

  • SRP : 하나의 클래스는 하나의 책임만을 가져야 한다.

  • OCP : 기능 추가에는 열려있고, 수정에는 닫혀있어야 한다.

  • LSP : 상속관계에서 자식클래스는 부모클래스의 기능을 대신할수있다.

  • ISP : 인터페이스는 필요한 기능만 가지게 만들어야한다.

  • DIP : 추상클래스에 의존하도록 만들어 교체가 쉽게 이루어질수있게 한다.

댓글을 작성해보세요.

채널톡 아이콘