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

코드 Refactoring

  • 이전 코드

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.getItems().isEmpty()) {
        log.info("주문 항목이 없습니다.");
        return false;
    }

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

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

Early return을 적용하여 중첩이 깊어지는 사항을 제거하였습니다.

order의 item 개수를 검증할 때, isEmpty() 메서드로 보다 이해하기 좋은 코드로 변경하였습니다.

 

SOLID

  • Single Responsibility Principal

    • 각 클래스는 하나의 책임만 가져야 하며, 변경 사유도 하나여야만 한다.

  • Open Closed Principal

    • 확장에는 열려있어야 하고, 변경에는 닫혀 있어야 한다.

    • 기존 코드를 변경하지 않고도 기능을 추가할 수 있어야 한다.

  • Liskov Substitution Principal

    • 부모 타입 객체를 자식 타입 객체로 치환해도 프로그램의 기능이 제대로 동작해야 한다.

  • Interface Segregation Principal

    • 인터페이스는 구체적이고 최소한으로 작게 분리 되어야 한다.

  • Dependency Inversion Principal

    • 고수준 모듈은 저수준 모듈에 의존하지 않고, 공통된 추상화에 의존해야 한다.

 

댓글을 작성해보세요.

채널톡 아이콘