내부자 거래(Insider Trading)

박상훈·2022년 8월 18일
어떤 모듈이 다른 모듈의 내부 정보를 지나치게 많이 알고 있는 코드(강한 결합도)

CheckIn - isFastPass 에서 불필요하게 많은 Ticket 클래스의 메서드에 접근한다
isFastPass 메서드를 Ticket 클래스로 옮기고 CheckIn 클래스를 제거

before

class CheckIn {
    public boolean isFastPass(Ticket ticket) {
        LocalDate earlyBirdDate = LocalDate.of(2022, 1, 1);
        return ticket.isPrime() && ticket.getPurchasedDate().isBefore(earlyBirdDate);
    }
}

class Ticket {
    private LocalDate purchasedDate;
    private boolean prime;

    // ...constructor, getPurchasedDate, isPrime
}

after

// beforeCheckIn 클래스 제거

class Ticket {
    private LocalDate purchasedDate;
    private boolean prime;

    // ...constructor, getPurchasedDate, isPrime

    public boolean isFastPass() {
        LocalDate earlyBirdDate = LocalDate.of(2022, 1, 1);
        return isPrime() && getPurchasedDate().isBefore(earlyBirdDate);
    }
}
profile
엔지니어

0개의 댓글