워밍업 클럽 4기 - 백엔드 Day 4 미션
3개월 전
코드 Refactoring
이전 코드
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.getItems().isEmpty()) {
log.info("주문 항목이 없습니다.");
return false;
}
if (order.getTotalPrice() <= 0) {
log.info("올바르지 않은 총 가격입니다.");
return false;
}
if (!order.hasCustomerInfo()) {
log.info("사용자 정보가 없습니다.");
return false;
}
return true;
}
Early return을 적용하여 중첩이 깊어지는 사항을 제거하였습니다.
order의 item 개수를 검증할 때, isEmpty() 메서드로 보다 이해하기 좋은 코드로 변경하였습니다.
SOLID
Single Responsibility Principal
각 클래스는 하나의 책임만 가져야 하며, 변경 사유도 하나여야만 한다.
Open Closed Principal
확장에는 열려있어야 하고, 변경에는 닫혀 있어야 한다.
기존 코드를 변경하지 않고도 기능을 추가할 수 있어야 한다.
Liskov Substitution Principal
부모 타입 객체를 자식 타입 객체로 치환해도 프로그램의 기능이 제대로 동작해야 한다.
Interface Segregation Principal
인터페이스는 구체적이고 최소한으로 작게 분리 되어야 한다.
Dependency Inversion Principal
고수준 모듈은 저수준 모듈에 의존하지 않고, 공통된 추상화에 의존해야 한다.
댓글을 작성해보세요.