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

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

 

 

미션 내용

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


리팩토링 전

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.isTotalPriceInvalid()) {
        log.info("올바르지 않은 총 가격입니다.");
        return false;
    }

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

    return true;
}

 

 

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

스마트폰에 비유해서 설명하겠습니다.

S – 단일 책임 원칙 (Single Responsibility Principle)

"카메라는 사진만 찍자. 스피커와 마이크기능까지 있으면 그만큼 고장날 위험이 많아지고 고치기 힘들다."

  • 하나의 부품에 여러 기능을 가지면 하나의 기능이 고장날 때, 모든 기능을 사용 못하고 유지보수가 어려워진다.

 

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

"앱을 추가해도 운영체제를 고치지 않아도 돼야 한다."

  • 새로운 기능(앱, 확장 기능)을 추가하더라도 기존 OS나 시스템 코드는 건드리지 않아야 한다.

  • 기존 구조는 닫혀 있고, 확장은 열려 있어야 함.


L – 리스코프 치환 원칙 (Liskov Substitution Principle)

"새 카메라 모듈을 껴도, '사진 찍기 버튼'은 그대로 작동해야 한다."

  • 카메라 모듈을 새 버전으로 바꾸더라도 기존 방식대로 사진이 찍히고 동작이 유지돼야 한다.

  • 대체 부품(서브클래스)은 원래 부품(슈퍼클래스)을 완벽히 대체할 수 있어야 함.

 

I – 인터페이스 분리 원칙 (Interface Segregation Principle)

"문자만 보내는 앱에 카메라, GPS, 블루투스를 요구하지 말자."

  • 앱이 자기에게 필요 없는 기능(인터페이스)까지 강제로 구현하게 하면 불필요한 권한 요청과 복잡도가 생김.

  • 기능을 작게 나눠서 필요한 기능만 연결할 수 있어야 한다.

 

D – 의존 역전 원칙 (Dependency Inversion Principle)

"핸드폰 운영체제는 '충전기'에 의존해야지, 삼성 65W 모델 같은 구체적인 충전기에 의존하면 안 된다."

  • OS나 하드웨어는 '충전 어댑터' 라는 기능(인터페이스)만 알면 된다.

  • 충전기 종류가 바뀌더라도 시스템이 동작되어야 확장성이 생긴다.


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

     

    미션 내용 - Readable Code: 읽기 좋은 코드를 작성하는 사고법 中 4. 객체 지향 패러다임

댓글을 작성해보세요.

채널톡 아이콘