4장. 프라이버시
- 할일 목록
$5 + 10CHF = $10 (환율이 2:1로 가정)
$5 x 2 = $10
amount를 private으로 만들기
Dollar side effect?
Money 반올림?
equals()
hashCode()
Equal null
Equal object
동치성 문제를 정의했으므로 이를 이용해서 테스트가 조금 더 많은 이야기를 해줄 수 있도록 해보자.
개념적으로 Dollar.times() 연산은 호출을 받는 객체의 값에 인자로 받은 곱수만큼 곱한 값을 갖는 Dollar를 반환해야 한다.
위 코드에서 단언(assertion)을 Dollar와 Dollar를 비교하는 것으로 재작성 할 수 있다.
임시 변수인 product는 쓸모없으니 인라인시켜보자.
테스트를 고치니 이제 Dollar의 amount 인스턴스 변수를 사용하는 코드는 Dollar 자신밖에 없게 됐다. 따라서 변수를 private으로 변경할 수 있다.
- 할일 목록
$5 + 10CHF = $10 (환율이 2:1로 가정)
$5 x 2 = $10
amount를 private으로 만들기
Dollar side effect?
Money 반올림?
equals()
hashCode()
Equal null
Equal object
할일 목록의 또 다른 항목을 지울 수 있게 됐다. 하지만 위험한 상황을 만들었을 수 있다. 만약 동치성 테스트가 동치성에 대한 코드가 정확히 작동한다는 것을 검증하는 데 실패하면, 곱하지 테스트 역시 곱하기에 대한 코드가 정확하게 작동한다는 것을 검증하는 데 실패하게 된다.
이것은 TDD를 하면서 적극적으로 관리해야 할 위험 요소이다.