[인프런 워밍업 클럽 4기] BE 스터디 Day 4 미션
4개월 전
Day4. SOLID와 코드 리팩토링
1. 코드 리팩토링
public boolean validateOrder(Order order) {
if (order.isEmpty()) {
log.info("주문 항목이 없습니다.");
return false;
}
if (!order.hasValidTotalPrice()) {
log.info("올바르지 않은 총 가격입니다.");
return false;
}
if (!order.hasCustomerInfo()) {
log.info("사용자 정보가 없습니다.");
return false;
}
return true;
}
public class Order {
private List<Item> items;
private double totalPrice;
private Customer customer;
public boolean isEmpty() {
return items == null || items.isEmpty();
}
public boolean hasValidTotalPrice() {
return totalPrice > 0;
}
public boolean hasCustomerInfo() {
return customer != null && customer.isValid(); // isValid()는 예시
}
}
2. SOLID에 대해 나만의 언어로 정리
S - 단일 책임 원칙 (SRP)
한 클래스는 오직 하나의 책임만 가져야 한다.
하나의 이유로만 변경되어야 한다.
O - 개방/폐쇄 원칙 (OCP)
기존 코드를 건드리지 않고, 새로운 기능을 추가할 수 있어야 한다.
즉, 확장에는 열려 있고 변경에는 닫혀 있어야 한다.
L - 리스코프 치환 원칙 (LSP)
자식 클래스는 부모 클래스의 역할을 대체할 수 있어야 한다.
부모가 기대한 기능을 자식도 지켜야 함.
I - 인터페이스 분리 원칙 (ISP)
큰 인터페이스 하나보단 작은 인터페이스 여러 개가 낫다.
사용하지 않는 기능에 대한 의존을 강요하지 말자.
D - 의존 역전 원칙 (DIP)
구체적인 것보다 추상에 의존하라.
즉, 상위 계층은 하위 계층의 구현에 의존하지 않아야 하고, 인터페이스나 추상 클래스에 의존해야 한다.
"SOLID는 변경에 강하고 유지보수에 강한 코드 구조를 위한 다섯 가지 설계 원칙이다. 잘게 나누고, 추상화하고, 예상 가능한 방식으로 확장할 수 있도록 만든다."
댓글을 작성해보세요.