🎁[속보] 인프런 내 깜짝 선물 출현 중🎁

워밍업 클럽 3기 BE 클린코드&테스트 - 1주차 발자국

워밍업 클럽 3기 BE 클린코드&테스트 - 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(order.isEmpty()){
            log.info("주문 항목이 없습니다.");
            return false;
        }

        if(order.hasNotCustomerInfo()){
            log.info("사용자 정보가 없습니다.");
            return false;
        }

        if(order.isNotPriceValid()){
            log.info("올바르지 않은 총 가격입니다.");
            return false;
        }
        return true;
    }

회고

발자국을 작성하면서 다시한번 미션 코드를 보니 validateOrder메소드의 위치가 바뀌어야 한다는 생각이 든다.

단일책임원칙을 생각했을때 주문에 대한 책임은 Order가 가지고 있는데 그러니 주문을 검증하는 코드역시 Order에 있어야 하는 것이 아닐까?

해당 메서드를 Order로 옮기거나 생성자에 검증을 넣거나 했어야 했다는 생각이 든다

댓글을 작성해보세요.


채널톡 아이콘