inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

워밍업 클럽 스터디 - Day4

winnercold
0

해당 글은 [인프런 워밍업 클럽 2기 클린 코드 & 테스트 코드]에 참가하여 박우빈님<Readable Code: 읽기 좋은 코드를 작성하는 사고법> 강의를 듣고 작성한 글입니다.

 

미션 2-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; 
}

 

validateOrder가 하는 일 파악하기

public boolean validateOrder(Order order){  
    if(order.getItems().size() == 0) {  
        log.info("주문 항목이 없습니다.");  
        return false;    
    }  
    if(!order.getTotalPrice() > 0){  
        log.info("올바르지 않은 총 가격입니다.");  
        return false;    
    }  
    if(!order.hasCustomerInfo()){  
        log.info("사용자 정보가 없습니다.");  
        return false;    
    }  
    return true;  
}

2. 부정어를 대하는 자세

3. getter 사용 자제

4. 예외처리

public class OrderException extends RuntimeException{
	public OrderException(String message) { 
		super(message); 
	} 
}

 

TO-BE

public boolean validateOrder(Order order){  
    if(order.isItemEmpty()) {  
        throw new OrderException("주문 항목이 없습니다.");  
    }  
    if(order.isTotalPriceLessThanZero()){  
        throw new OrderException("올바르지 않은 총 가격입니다.");  
    }  
    if(order.isCustomerInfoMissing()){  
        throw new OrderException("사용자 정보가 없습니다.");  
    }  
    return true;  
}

// Order
private boolean isItemEmpty() {  
    return this.items.isEmpty();  
}  
  
private boolean isTotalPriceLessThanZero() {  
    return this.items.stream()  
            .mapToInt(Item::getPrice).sum() <= 0;  
  
}  
private boolean isCustomerInfoMissing() {  
    return this.customInfo.isEmpty();  
}

 

미션 2-2. SOLID 에 대해 자기만의 언어로 적어보기

 

1. SRP : 단일 책임 원칙

2. OCP : 개방 폐쇄 원칙

3. LSP : 리스코프 치환 원칙

4. ISP : 인터페이스 분리 원칙

5. DIP : 의존성 역전 원칙

답변 0