워밍업 클럽 4기 - 백엔드 Day 4
3개월 전
1. 코드 리팩토링
As-Is
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;
}
To-Be
public boolean validateOrder(Order order) {
if (doesNotHaveItems(order)) {
log.info("주문 항목이 없습니다.");
return false;
}
if (doesNotHaveTotalPrice(order)) {
log.info("올바르지 않은 총 가격입니다.");
return false;
}
if (doesNotHaveCustomerInfo(order)) {
log.info("사용자 정보가 없습니다.");
return false;
}
return true;
}
boolean doesNotHaveItems(Order order) {
return (order.getItems().size() == 0)? true : false;
}
boolean doesNotHaveTotalPrice(Order order) {
return !(order.getTotalPrice() > 0)? true : false;
}
boolean doesNotHaveCustomerInfo(Order order) {
return !order.hasCustomerInfo()? true : false;
}
2. SOLID에 대하여 자기만의 언어로 정리
SRP : 클래스는 단일 책임을 가져야 한다
OCP : 새로운 기능 추가는 확장으로 처리한다
LSP : 자식 클래스로 부모 클래스를 대체 가능하다
ISP : 인터페이스도 가능한 작은 단위로 분리한다
DIP : 구체보다 추상에 의존하자
SOLID는 읽기 쉽고, 유지 보수가 쉽고, 기능 추가/변경을 쉽게 한다
댓글을 작성해보세요.