1부 2장 타락한 객체
< 현재 구현해야할 목록 >
- $5 + 10CHF = $10 (환율이 2:1일 경우)
$5 * 2 = $10- amount를 private로 만들기
- Dollar 부작용
- Money 반올림
테스트는 통과했지만 해당 Dollar의 값이 영원히 바뀌어 버린다. 아래와 같은 기능을 사용하고 싶다.
public void testMultiplication() {
Dollar five = new Dollar(5);
five.times(2);
assertEquals(10, five.amount);
five.times(3);
assertEquals(15, five.amount);
}
test code와 Dollar class를 아래와 같이 바꾸면 작동한다.
public void testMultiplication() {
Dollar five = new Dollar(5);
Dollar product = five.times(2);
assertEquals(10, product.amount);
product = five.times(3);
assertEquals(15, product.amount);
}
public class Dollar {
public int amount;
public Dollar(int amount) {
this.amount = amount;
}
public Dollar times(int multiplier) {
return new Dollar( amount * multiplier);
}
}
< 현재 구현해야할 목록 >
- $5 + 10CHF = $10 (환율이 2:1일 경우)
$5 * 2 = $10- amount를 private로 만들기
Dollar 부작용- Money 반올림
위의 과정이 잘못됨을 안다. 하지만 일단 테스트를 통과하는게 우선이다. 빨리 통과하기 위해서 취할 수 있는 방법은 2가지다.
- 가짜로 구현하기: 상수를 반환하게 만들고 진짜 코드를 얻을 때까지 단계적으로 상수를 변수로 바꾼다.
- 명백한 구현 사용하기: 실제 구현을 입력한다.
우리가 지금까지 한 일은
- 설계상의 결함(Dollar 부작용)을 그 결함으로 인해 실패하는 테스트로 변환
- 스텁 구현으로 빠르게 컴파일 통과하도록 함
- 올바르다고 생각하는 코드를 입력해서 테스트 통과
Author And Source
이 문제에 관하여(1부 2장 타락한 객체), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@miiunii/1부-2장-타락한-객체저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)