코드 리팩토링과 SOLID

  1. 주문 검증 코드 리팩토링

public boolean validateOrder(Order order) {
    if (order == null) {
        log.info("주문이 없습니다.");
        return false;
    }

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

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

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

    return true;
}

 

  1. 내가 이해한 SOLID

     

    견고한(SOLID) 소프트웨어를 만드는 데 도움을 주는 5가지의 원칙

     

    심심찮게 접하는 원칙이지만, 돌아서면 단일책임원칙만 기억나고 나머지 원칙들은 항상 떠오르질 않았다.

     

    이번 기회에 장기 기억으로 가져가 보자.

     

     

    단일책임원칙: 말그대로 하나의 책임만 가져야 한다. 한 가지 일만 잘 하자.

     

    개방폐쇄원칙: 확장에는 "개방", 변경에는 "폐쇄"를 뜻한다.

     

    진열장에 새로운 굿즈들이 들어오는 것은 환영이지만, 새로운 굿즈가 기존 굿즈들의 조화로움을 해쳐선 안 된다.

     

    리스코프치환원칙: 상속 구조에서 하위 객체가 상위 객체에 영향을 주어선 안 되며, 하위 인스턴스로 상위 인스턴스를 치환할 수도 있어야 한다. 사수의 지시/코드 컨벤션을 따르면서, 유사시 사수의 업무도 해낼 수 있어야 한다.

     

    인터페이스분리원칙: 하나의 인터페이스에 기능이 불필요하게 많거나, 불필요하게 많은 인터페이스를 의존함으로써

     

    사용하지 않는 기능에 까지 의존해선 안 된다.

     

    주방용품인 키친타올이 닦을 수 있다고 해서 화장실용품으로도 사용한다면...

     

    의존역전원칙: 고수준모듈이 저수준모듈을 참조하는 형태는 자연스러워 보이지만, 구체화된 저수준 모듈은 변경이 잦다.

     

    어떤 모듈이 변경되어도 서로에게 영향도가 적도록 고/저수준 모듈 모두 추상화에 의존해야 한다.

     

    이 원칙만큼은 어떻게 표현해야 할 지.. 무슨 말인지는 어렴풋이 알겠는데 아직은 어려운 원칙이다.

     

     

댓글을 작성해보세요.

채널톡 아이콘