해당 글은 인프런 박우빈 강사님의 『Readable Code: 읽기 좋은 코드를 작성하는 사고법』을 바탕으로 작성하였습니다.
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(Order order) - 사용자가 생성한 주문이 유효한지 검증하는 메서드
로직 작동 순서를 간단히 파악해보자.
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;
}
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;
}
!order.hasCustomerInfo()
역시 불필요한 부정 연산자, 별도의 doesNotHaveCustomerInfo()
메서드를 Order 객체 내부에 생성했다고 가정 후 리팩토링