|
TDD
- 오직 자동화된 테스트가 실패할 경우에만 새로운 코드를 작성한다.
- 중복을 제거한다.
프로그래밍 순서
- 빨강 - 실패하는 작은 테스트를 작성한다. 처음에는 컴파일조차 되지 않을 수 있다.
- 초록 - 빨리 테스트가 통과하게끔 만든다. 이를 위해 어떤 죄악(copy and paste, 테스트만 간식히 통과할 수 있게끔 함수가 무조건 특정 상수를 반환하도록 구현하기 등)을 저질러도 좋다.
- 리팩토링 - 일단 테스트를 통과하게만 하는 와중에 생겨난 모든 중복을 제거한다.
- 불확실한 상태로 있는 대신, 가능하면 재빨리 구체적인 학습을 하기 시작한다.
- 침묵을 지키는 대신, 좀 더 분명하게 커뮤니케이션한다.
- 피드백을 회피하는 대신, 도움이 되고 구체적인 피드백을 찾는다.
- (자신의 나쁜 성깔을 직접 해결해야 한다.)
다중 통화를 지원하는 Money 객체
TDD 단계
- 테스트 작성
- 컴파일되게 하기
- 실패하는지 확인하기 위해 실행
- 실행하게 만듦
- 중복제거
: 1~4는 빠르게 진행
"$5 * 2 = $ 10 을 테스트하자!"
"컴파일 에러를 고치고 테스트가 실패하는 것을 확인하자!"
"조금 수정하고 테스트가 성공하는 것을 확인하자!"
"중복을 제거하기 위해 리팩토링을 하자!"
- 오직 테스트를 향상시키기 위해서만 개발된 기능을 사용했다.
- 두 테스트가 동시에 실패하면 망한다는 점을 인식했다.
- 위험 요소가 있음에도 계속 진행했다.
- 테스트와 코드 사이의 결합도를 낮추기 위해, 테스트하는 객체의 새 기능을 사용했다.
- 큰 테스트를 공략할 수 없다. 그래서 진전을 나타낼 수 있는 자그마한 테스트를 만들었다.(Divide and qunqer)
- 뻔뻔스럽게도 중복을 만들고 조금 고쳐서 테스트를 작성했다.
- +) 모델 코드까지 도매금으로 복사하고 수정해서 테스트를 통과했다. (Dollar -> Fran)
- 중복이 사라지기 전에는 집에 가지 않겠다고 약속했다.
반응형
'Book > Programming' 카테고리의 다른 글
[CleanCode] 2장 의미 있는 이름 (2) | 2022.02.16 |
---|---|
[코틀린을 다루는 기술] Chapter 03. 함수로 프로그래밍하기 (0) | 2020.06.29 |
[Java프로그래밍면접 이렇게 준비한다] Chapter20. 안드로이드 (0) | 2020.01.21 |
[Java프로그래밍면접 이렇게 준비한다] chapter8. 자바 기본 (0) | 2020.01.21 |
[Algorithmic Problem Solving Strategies] 8. 동적계획법 (0) | 2019.11.26 |