주식 거래소를 운영하고 있다고 가정한다. 현재는 USD만 지원하지만 Franc도 지원하게 수정하고 싶다. 앞으로의 과정들은 이것을 설명한다.
< 현재 구현해야할 목록 >
-> 통화가 다른 두 금액을 더해서 주어진 환율에 맞게 변한 금액을 결과로 얻을 수 있어야 한다.
-> 주가를 주식의 수에 곱한 금액을 결고로 얻을 수 있어야 한다.
public void testMultiplication() {
Dollar five = new Dollar();
five.times(2);
assertEquals(10, five.amount);
}
Dollar class를 만들어서 위의 오류를 잡는다.
public class Dollar {
public int amount;
public Dollar(int amount) {
}
public void times(int multiplier) {
}
}
오류는 모두 잡혔고 실행한다면 에러가 발생한다. 우리는 10을 바랐지만 값은 0으로 나왔다. 우선 테스트를 통과하기 위해서 아래와 같이 수정한다.
public class Dollar {
public int amount = 10;
public Dollar(int amount) {
}
public void times(int multiplier) {
}
}
테스트를 통과함을 볼 수 있다!
주기는 아래와 같다.
public class Dollar {
public int amount;
public Dollar(int amount) {
this.amount = amount;
}
public void times(int multiplier) {
amount *= multiplier;
}
}
위와 같이 리팩토링하면 중복을 제거하고 변하는 값에 따라서 원하는 값을 얻을 수 있게 되었다.
우리가 진행한 작업은 다음과 같다.