inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[인프런 워밍업 클럽 2기 클린코드 & 테스트 코드] Day4 과제

허수빈
0

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

 

1. 코드 리팩토링

/*
* 주문 검증 메서드
* 1. 주문 항목이 0 이상이어야 한다.
* 2. 총 금액이 0 이상이어야 한다.
* 3. 주문을 하는 사용자 정보가 있어야 한다.
*/

public boolean validateOrder(Order order) {
        return hasItems(order) && hasCustomerInfo(order) && isTotalPriceInvalid(order);
}

private static boolean hasItems(Order order) {
        if (order.getItems().size() > 0) {
            return true;
        }
        log.info("주문 항목이 없습니다.");
        return false;
}

private static boolean isTotalPriceInvalid(Order order) {
        if (order.getTotalPrice() > 0) {
            return true;
        }
        log.info("올바르지 않은 총 가격입니다.");
        return false;
}

private static boolean hasCustomerInfo(Order order) {
        if (order.hasCustomerInfo()) {
            return true;
        }
        log.info("사용자 정보가 없습니다.");
        return false;
}

 

2. SOLID를 자기만의 언어로 정리하기

SRP : Signle Responsibility Principle

OCP : Open - Closed Principle

LSP : Liskov Substitution Principle

ISP : Interface Segregation Principle

DIP : Dependency Inversion Principle

 

전부 결합도를 낮추고 응집도를 높인다!

백엔드 인프런워밍업클럽

답변 0