1부 7장 사과와 오렌지

김희윤·2021년 4월 1일
0

테스트주도개발

목록 보기
7/16

영어 속담에 "You can't compare apples and oranges"란 말이 있다
-> 서로 다른 걸 비교할 수 없다는 뜻

< 현재 구현해야할 목록 >

  • $5 + 10CHF = $10 (환율이 2:1일 경우)
  • $5 * 2 = $10
  • amount를 private로 만들기
  • Dollar 부작용
  • Money 반올림
  • equals()
  • hashCode()
  • Equal null
  • Equal object
  • ~~ 5CHF * 2 = 10CHF~~
  • Dollar/Franc 중복제거
  • 공용 equals
  • 공용 times
  • Franc과 Dollar 비교하기

Franc과 Dollar를 비교하면

@Test
    public void testEquality() {
        assertEquals(new Dollar(5), new Dollar(5));
        assertNotEquals(new Dollar(5), new Dollar(6));
        assertEquals(new Franc(5), new Franc(5));
        assertNotEquals(new Franc(5), new Franc(6));
        assertNotEquals(new Franc(5), new Dollar(5));
    }

에러가 발생한다 Dollar 와 Franc을 같은 것으로 취급한다.

따라서 Money class 에 아래와 같이 추가한다.

public class Money {
    protected int amount;

    public boolean equals(Object object) {
        Money money = (Money) object;
        return amount == money.amount && getClass().equals(money.getClass());
    }
}

< 현재 구현해야할 목록 >

  • $5 + 10CHF = $10 (환율이 2:1일 경우)
  • $5 * 2 = $10
  • amount를 private로 만들기
  • Dollar 부작용
  • Money 반올림
  • equals()
  • hashCode()
  • Equal null
  • Equal object
  • ~~ 5CHF * 2 = 10CHF~~
  • Dollar/Franc 중복제거
  • 공용 equals
  • 공용 times
  • Franc과 Dollar 비교하기
  • 통화?

지금까지 우리가 한 성과는

  • 우릴 괴롭히던 결함을 끄집어내서 해결했다.
  • 완벽하지는 않지만 봐줄만한 방법으로 getClass 테스트를 통과했다.
  • 더 많은 동기가 있기 전에는 더 이상 설계를 도입하지 않기로 했다.
profile
블록체인, IOT, 클라우드에 관심이 많은 개발자 지망생

0개의 댓글

관련 채용 정보