🔥딱 8일간! 인프런x토스x허먼밀러 역대급 혜택

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

1. 코드 리팩토링

  • 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 boolean validateOrder(Order order) {  
    if (doesNotHaveItems(order)) {  
       log.info("주문 항목이 없습니다.");  
       return false;  
    }  
  
    if (doesNotHaveTotalPrice(order)) {  
       log.info("올바르지 않은 총 가격입니다.");  
       return false;  
    }  
  
    if (doesNotHaveCustomerInfo(order)) {  
       log.info("사용자 정보가 없습니다.");  
       return false;  
    }  
  
    return true;  
}  
  
boolean doesNotHaveItems(Order order) {  
    return (order.getItems().size() == 0)? true : false;  
}  
  
boolean doesNotHaveTotalPrice(Order order) {  
    return !(order.getTotalPrice() > 0)? true : false;  
}  
  
boolean doesNotHaveCustomerInfo(Order order) {  
    return !order.hasCustomerInfo()? true : false;  
}

 

2. SOLID에 대하여 자기만의 언어로 정리

SRP : 클래스는 단일 책임을 가져야 한다
OCP : 새로운 기능 추가는 확장으로 처리한다
LSP : 자식 클래스로 부모 클래스를 대체 가능하다
ISP : 인터페이스도 가능한 작은 단위로 분리한다
DIP : 구체보다 추상에 의존하자

SOLID는 읽기 쉽고, 유지 보수가 쉽고, 기능 추가/변경을 쉽게 한다

 

 

댓글을 작성해보세요.

채널톡 아이콘