1부 4장 프라이버시

< 현재 구현해야할 목록 >

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

개념적으로 Dollar.times() 연산은 호출을 받은 객체의 값에 인자로 받은 곱수만큼 곱한 값을 갖는 Dollar를 반환해야 한다. 하지만 테스트가 정확히 반영하지 않고있다.

test code를 아래와 같이 바꾼다

@Test
public void testMultiplication() {
        Dollar five = new Dollar(5);
        assertEquals(new Dollar(10), five.times(2));
        assertEquals(new Dollar(15), five.times(3));
}

Dollar class에서 amount를 private로 바꿔준다.

 private int amount;

이렇게 바꿀 수 있었던 이유는 위의 테스트가 일련의 오퍼레이션이 아니라 참인 명제에 대한 단언들이기 때문이다. 즉 amount 변수를 사용하는 코드는 Dollar 자신밖에 없기 때문에 private로 변경할 수 있다.

< 현재 구현해야할 목록 >

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

우리는 지금까지

  • 오직 테스트를 향상시키기 위해서만 개발된 기능을 사용
  • 두 테스트가 동시에 실패하면 망한다는 점을 인식
  • 위험 요소가 있음에도 계속 진행
  • 테스트와 코드 사이의 결합도를 낮추기 위해, 테스트하는 객체의 새 기능을 사용했다.

좋은 웹페이지 즐겨찾기