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

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 ]

  • 정보의 기억량을 최소화 하기 위해 Early Return 사용

 

[ 객체 위임 ]

  • 객체는 스스로 판단 하고 행동 하는 주체

  • 객체와 협력 하기 위해서 getter 사용 하여 값을 추출 하는 것이 아닌 메세지 요청

  • 객체 내부에서 관련된 로직을 수행 하고 외부에는 노출 하지 않으므로 캡슐화

 

[ 부정 연산자 사용x ]

  • 부정 연산자( ! )는 사고 Depth 상승

  • 부정 연산자를 사용 하지 않고 행위에 부정 의미를 담기

 


📝 2. SOLID

 

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

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

  • ex ) 입출력을 한 객체가 담당할 경우 SRP 위반

 

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 )

  • 상위 모듈이 하위 모듈에 의존 하는 것이 순방향

  • 상위 모듈 하위 모듈 모두 추상화에 의존 하는 원칙

     

댓글을 작성해보세요.

채널톡 아이콘