Skip to content

Refactor: Day 7 코드 리팩토링#1

Open
Tokwasp wants to merge 2 commits intomainfrom
refactor/day-7
Open

Refactor: Day 7 코드 리팩토링#1
Tokwasp wants to merge 2 commits intomainfrom
refactor/day-7

Conversation

@Tokwasp
Copy link
Owner

@Tokwasp Tokwasp commented Jun 4, 2025

✅ 추상화

[ passTypeIntroduce ]

  • 기능: 카페 안내 문구와 이용권에 대한 설명을 추상화
  • 고민 : 매개 변수와 반환 타입을 통해 함수의 역할을 추론할 수 있는데 없기 때문에 잘 추상화 된것인가? 의문이 듭니다.
private void passTypeIntroduce() {
        outputHandler.showWelcomeMessage();
        outputHandler.showAnnouncement();
        outputHandler.askPassTypeSelection();
}

[ findLockerPass ]

  • 기능: lockerPass 찾기
  • 고민 : 스트림을 추상화 할 경우 가독성이 좋아 진다고 생각 하여 분리 하였습니다.
 private StudyCafeLockerPass findLockerPass(StudyCafePass selectedPass, List<StudyCafeLockerPass> lockerPasses) {
        return lockerPasses.stream()
                .filter(lockerPass ->
                        lockerPass.isSamePassType(selectedPass)
                                && lockerPass.isSameDuration(selectedPass)
                )
                .findFirst()
                .orElse(null);
}

[ ✅ 객체 위임 ]

[ 이용권 가격 계산 ]

  • 이용권의 상태를 통해 할인 가격, 이용권 가격을 구할 수 있기 때문에 객체 위임
int discountPrice = selectedPass.calculateDiscountPrice();
int totalPrice = selectedPass.getTotalPrice() + (lockerPass == null ? 0 : lockerPass.getPrice());

[ getter 사용 하지 않기 ]

  • getter를 통해 값을 꺼내는 것이 아닌 lockerPass에게 물어 보기
  private StudyCafeLockerPass findLockerPass(StudyCafePass selectedPass, List<StudyCafeLockerPass> lockerPasses) {
        return lockerPasses.stream()
                .filter(lockerPass ->
                        lockerPass.isSamePassType(selectedPass)
                                && lockerPass.isSameDuration(selectedPass)
                )
                .findFirst()
                .orElse(null);
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant