Skip to content

8월 10일 개발 로그

HyeonSik Choi edited this page Aug 10, 2024 · 6 revisions

유동근, 최현식

문! 제! 발! 생! PriceManager가 가격 관리에 대한 책임을 가지고 있음

  • 가격 관리 정책은 PricePolicy에 저장되어있는데, 여기에 가격 변동 시간?이 있음.
  • PriceManager는 해당 시간 단위로 가격을 변동시켜야 한다.
  • 문제는 외부에서 PriceManager.changePrice를 호출할 때에만 가격 변동 동작을 할 수 있다.
  • Auction은 데이터인가 객체인가?
image

롤백하고 다시 이걸로 시작! image


Double 타입 사용으로 인한 손실

빅데시멀 사용하는 투두를~

@Getter
public class PercentagePricePolicy implements PricePolicy {

    private final double discountRate;

    public PercentagePricePolicy(double discountRate) {
        this.discountRate = discountRate;
    }

    @Override
    public void validate(long price) {
        long nextPrice = (long) (price * (100 - discountRate));  // <- 이 부분의 손실 발생 가능

        if (nextPrice <= 0) {
            throw new BadRequestException(
                    String.format("상품 원가는 할인율을 적용한 가격보다 커야 합니다. 상품 원가: %d, 할인율: %f", price, discountRate),
                    ErrorCode.A010);
        }
    }
}

기타

뿌듯한 주말 코딩 ^_^

image