inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

hotfix
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 (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는 읽기 쉽고, 유지 보수가 쉽고, 기능 추가/변경을 쉽게 한다

 

 

백엔드 리팩토링 SOLID SRP OCP LSP ISP DIP

답변 0