워밍업 클럽 4기 BE - Day4 미션

 1. 아래 코드와 설명을 보고, [섹션 3. 논리, 사고의 흐름]에서 이야기하는 내용을 중심으로 읽기 좋은 코드로 리팩토링해 봅시다.

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) {
     // NullPointException 처리
     if(order == null) {
         log.info("주문 정보가 없습니다.");
         return false;
     }

     if (order.getItems().size() == 0) {
         log.info("주문 항목이 없습니다.");
         return false;
     } 

     if (order.getTotalPrice() > 0) {
         // 부정구 제거
         if (order.hasCustomerInfo()) {
             return true;
         }

         log.info("사용자 정보가 없습니다.");
         return false;

     } 
        
     log.info("올바르지 않은 총 가격입니다.");
     return false;
}
  • NullPointException 예외 처리 추가

  • 부정 연산자 제거

  • Early return으로 중첩문 최소화

 

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

SRP: 비서는 회의 스케줄만 관리하고, 식사 예약은 총무팀이 한다.

OCP: 게임 콘솔은 본체를 수정하지 않고 새 게임 카드만 꽂아도 작동한다.

LSP: 정직원이 회사 시스템에 로그인할 수 있다면, 계약직 직원도 똑같이 로그인할 수 있어야 한다.

ISP: 카메라 기능만 필요한 사람은 여러 기능이 있는 스마트폰을 사용할 필요가 없다.

DIP: 테니스 라켓은 특정 브랜드 공에만 맞게 만들지 않고 어떤 공이든 칠 수 있도록 표준 규격으로 만든다.

댓글을 작성해보세요.

채널톡 아이콘