1부 3장 모두를 위한 평등

김희윤·2021년 3월 31일
0

테스트주도개발

목록 보기
3/16

우리는 어떤 정수에 1을 더했을 때 원래 정수가 변한다고 생각하기 보다는 원래 정수에 1이 더해진 새로운 값을 갖게 될 것을 예상한다. 하지만 객체는 우리 예상대로 작동하지 않는다.

< 현재 구현해야할 목록 >

  • $5 + 10CHF = $10 (환율이 2:1일 경우)
  • $5 * 2 = $10
  • amount를 private로 만들기
  • Dollar 부작용
  • Money 반올림
  • equals()
  • hashCode()

아래와 같이 구현하면 삼각측량을 구현할 수 있다.

@Test
public void testEquality() {
        assertTrue(new Dollar(5).equals(new Dollar(5)));
        assertFalse(new Dollar(5).equals(new Dollar(6)));
    }
    
public boolean equals(Object object) {
        Dollar dollar = (Dollar) object;
        return amount == dollar.amount;
    }

삼각측량이란,

만약 라디오 신호를 두 수신국이 감지하고 있을 때, 수신국 사이의 거리가 알려져있고 각 수신국이 신호의 방향을 알고 있다면, 이 정보들 만으로 충분히 신호의 거리와 방위를 알 수 있다.

< 현재 구현해야할 목록 >

  • $5 + 10CHF = $10 (환율이 2:1일 경우)
  • $5 * 2 = $10
  • amount를 private로 만들기
  • Dollar 부작용
  • Money 반올림
  • equals()
  • hashCode()
  • Equal null
  • Equal object

일단 동일성 문제는 일시적으로 해결했다. 하지만 null 이나 다른 객체랑 비교하면 모른다. 그렇기에 일단 할 일에 적어둔다.

우리가 이번 장에서 한 일은 아래와 같다.

  • 우리의 디자인 패턴이 하나의 또 다른 오퍼레이션을 암시한다는 걸 알아챘다.
  • 해당 오퍼레이션을 테스트했다.
  • 해당 오퍼레이션을 간단히 구현했다.
profile
블록체인, IOT, 클라우드에 관심이 많은 개발자 지망생

0개의 댓글

관련 채용 정보