해당 글은 인프런 박우빈 강사님의 『Readable Code: 읽기 좋은 코드를 작성하는 사고법』을 바탕으로 작성하였습니다.

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

문제 파악

validateOrder(Order order) - 사용자가 생성한 주문이 유효한지 검증하는 메서드

로직 작동 순서를 간단히 파악해보자.

1. Early return 체크 + 부정 연산자 제거 + 중첩 줄이기

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. 공백 라인에 의미 가지기

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;
}

3. 메서드 추출