inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[워밍업 클럽 4기 - 백엔드] Day4 미션

박서연
0

[인프런 워밍업 클럽 스터디 4기 - 백엔드]

강의 출처 : Readable Code: 읽기 좋은 코드를 작성하는 사고법


Day4 미션 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.isEmptyOrder()) {
        log.info("주문 항목이 없습니다.");
        return false;
    }
    if (order.isInvalidTotalPrice()) {
        log.info("올바르지 않은 총 가격입니다.");
        return false;
    }
    if (order.isEmptyCustomerInfo()) {
        log.info("사용자 정보가 없습니다.");
        return false;
    }
    return true;
}

 

리팩토링 적용 내용

1) Early Return : 불필요한 else를 제거하고, 조건이 맞지 않을 경우 즉시 return 하도록 하여 전체 흐름을 더 간결하게 만들었습니다.

2) 사고의 depth 줄이기 : 중첩된 조건문을 제거하고, 각 조건을 평평하게 분리하여 코드의 읽기 흐름이 깊어지지 않도록 개선하였습니다.

3) 부정 연산 최소화 : 부정 연산자의 사용을 줄이고, 메서드 이름에 긍정적인 의미를 담아 코드를 직관적으로 이해할 수 있도록 표현하였습니다.

4) getter 사용 자제 : getter를 직접 호출하지 않고, Order 내부에 메서드를 정의하여 객체가 스스로 판단하도록 설계하여 캡슐화 원칙을 유지하였습니다.

5) 명확한 이름 짓기 : 메서드 이름에 행위와 의미가 잘 드러나도록 하여, 조건의 의도를 한눈에 파악할 수 있도록 리팩토링하였습니다.

 

 

Day4 미션 2 :

SOLID에 대하여 자기만의 언어로 정리

 

SRP - 단일 책임 원칙 (Single Responsibility Principle)

OCP - 개방/폐쇄 원칙 (Open-Closed Principle)

LSP - 리스코프 치환 원칙 (Liskov Substitution Principle)

ISP - 인터페이스 분리 원칙 (Interface Segregation Principle)

DIP - 의존 역전 원칙 (Dependency Inversion Principle)

백엔드 워밍업클럽

답변 0