티스토리 뷰

반응형

안녕하세요. 도미닉입니다.

TDD 를 알고는 있었지만 제대로 사용하기는 어렵다는 생각을 했습니다.

밥 아저씨도 캔트 백 아저씨한테 찾아가서 TDD 를 배웠다고 들었고 혼자 TDD 를 할 때 제대로 할 수 있을까 하는 두려움이 들었기 때문입니다.

TDD 를 공부하고 혼자서 사용하는 분들이 많다는 것을 알게 되었고 피드백을 받으며 사용해보고자 이 포스팅을 작성합니다.

많은 지적과 격려 부탁드립니다.

첫번째 요구사항은 고정된 요금 방식입니다.

예를 들면 10분에 500원이라고 하겠습니다.

 

1. 실패하는 테스트 코드 작성

첫 테스트 코드

Fare 라는 객체가 없어서 오류가 발생합니다.

 

2. 통과하도록 최대한 빨리 코드 작성

Fare 라는 객체를 만들어주었습니다.

minute 과 amount 를 속성으로 가지고 있으며 minute 에 따라 amount 가 계산되어 리턴됩니다.

통과한 테스트

3. 리펙토링

 

minute 라는 값이 없어도 될 것이라고 생각해서 매개변수로 받도록 calcurateAmount 메소드를 작성했습니다.

테스트 코드 또한 위와 같이 바뀌었습니다.

 

이걸로 분당 50원인 고정된 요금 방식은 해결되었습니다.

 

생각해보니 분당 50원이라는 요금이 바뀌었을 때 하드코딩한 calcurateAmount 메소드에 minute * 50 에서 50을 변경해줘야할 것입니다.

 

fare 라는 객체가 생성될 때 이 분당 요금을 저장하도록 개선해보겠습니다.

 

1. 실패하는 테스트 작성

2. 통과하도록 최대한 빨리 코드 작성

 

Fare 객체를 아래와 같이 수정했습니다.

테스트 코드를 통과했습니다.

 

3. 리펙토링

 

외부에 노출하지 않아도 되는 amountPerMinute 프로퍼티는 private 으로 수정했습니다.

결과값인 amount 가 꼭 존재해야 하는지 의문이 들었습니다. calcurateAmount 메소드의 결과값으로 요금을 리턴하도록 수정해봤습니다.

 

amount 속성이 제거 됨에 따라서 calcurateAmount 앞에 속성 값 수정을 위해 썼던 mutating 도 제거하였습니다.

 

이에 따라 테스트코드도 약간 수정되었습니다.

 

여기까지 1분 당 몇 원이 부과되는 고정된 요금 방식에 따라 요금이 계산되는 계산기를 만들어봤습니다.

 

잘못된 부분이나 의견 있으면 댓글 달아주세요.

 

감사합니다.

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함