강의: Readable Code: 읽기 좋은 코드를 작성하는 사고법 - 박우빈
Readable Code: 읽기 좋은 코드를 작성하는 사고법 강의 | 박우빈 - 인프런
미션 1
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()) { // getter 대신 명시적으로 조건을 요구하는 메서드를 사용
log.info("주문 항목이 없습니다.");
return false;
}
// early return을 통하여 else문을 제거 -> depth 낮아짐
if (order.checkInvalidTotalPrice()) {
log.info("올바르지 않은 총 가격입니다.");
return false;
}
// 부정어를 메서드 네임에 표현
if (order.doesNotHaveCustomerInfo()) {
log.info("사용자 정보가 없습니다.");
return false;
}
return true;
}
미션 2
SOLID에 대하여 자기만의 언어로 정리해 봅시다.
SOLID는 SRP, OCP, LSP, ISP, DIP의 앞 글자를 따서 만든 말로, 객체 지향 설계를 우리가 더 이해하기 쉽고 유연하고, 유지보수 하기 쉽게 만드는 데 도움을 주는 원칙들이다.
하나씩 정리해보면
SRP
OCP
LSP
ISP
DIP
Dependency Inversion Principle
의존성 역전 원칙
상위 수준의 모듈은 하위 수준의 모듈에 의존해서는 안 됨
의존성의 순방향
의존성의 역방향
→ 저수준 모듈이 변경되어도, 고수준 모듈에는 영향이 가지 않음