워밍업 클럽 4기 BE - Day4 미션
3개월 전
1. 아래 코드와 설명을 보고, [섹션 3. 논리, 사고의 흐름]에서 이야기하는 내용을 중심으로 읽기 좋은 코드로 리팩토링해 봅시다.
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) {
// NullPointException 처리
if(order == null) {
log.info("주문 정보가 없습니다.");
return false;
}
if (order.getItems().size() == 0) {
log.info("주문 항목이 없습니다.");
return false;
}
if (order.getTotalPrice() > 0) {
// 부정구 제거
if (order.hasCustomerInfo()) {
return true;
}
log.info("사용자 정보가 없습니다.");
return false;
}
log.info("올바르지 않은 총 가격입니다.");
return false;
}
NullPointException 예외 처리 추가
부정 연산자 제거
Early return으로 중첩문 최소화
2. SOLID에 대하여 자기만의 언어로 정리해 봅시다.
SRP: 비서는 회의 스케줄만 관리하고, 식사 예약은 총무팀이 한다.
OCP: 게임 콘솔은 본체를 수정하지 않고 새 게임 카드만 꽂아도 작동한다.
LSP: 정직원이 회사 시스템에 로그인할 수 있다면, 계약직 직원도 똑같이 로그인할 수 있어야 한다.
ISP: 카메라 기능만 필요한 사람은 여러 기능이 있는 스마트폰을 사용할 필요가 없다.
DIP: 테니스 라켓은 특정 브랜드 공에만 맞게 만들지 않고 어떤 공이든 칠 수 있도록 표준 규격으로 만든다.
댓글을 작성해보세요.