Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 이펙티브코틀린
- 함수형프로그래밍
- GrokkingFunctionalProgramming
- Boot Legacy 차이점
- 아키텍처
- 계층형아키텍처
- 코틀린
- Kotlin
- 테스트주도개발
- Java
- 스터디
- 추상화 설계
- Thymeleaf
- 개발방법론
- 만들면서배우는클린아키텍처
- 책스터디
- Spring
- 헥사고날아키텍처
- template
- DDD
- web
- FP
- 객체지향의사실과오해
- 클린아키텍처
- TDD
- 유지보수
- 개발서적
- 도메인 주도 개발 시작하기
- 테스트
- 조영호
Archives
- Today
- Total
김동형수 개발기
테스트 주도 개발 - 1부 6장 본문
6장 돌아온 '모두를 위한 평등'
할일목록
- $5 + 10CHF = $10(환율이 2:1일 경우)
$5 X 2 = $10amount를 private로 만들기Dollar 부작용?- Money 반올림?
equals()- hashCode()
- Equal null
- Equal object
5CHF X 2 = 10CHF- Dollar / Franc 중복
- 공용 equals
- 공용 times
5장에서 복사 붙여넣기 후 수정을 통해서 중복코드를 생성했기 때문에 중복을 제거해야한다.
상위 클래스인 Money가 equals를 갖게 한다면 어떨까?
간단한 것부터 시작해보자.
Money 클래스 생성한다고 해도 테스트는 여전히 통과한다.
Dollar가 Money 클래스를 상속받는다고 해도 여전히 깨지지 않는다.
여전히 깨지지 않는다.
amount 인스턴스 변수를 Money로 옮길 수 있다.
equals() 도 Money 클래스로 옮길 수 있다.
모든 테스트가 여전히 잘 돈다.
equals()에서 casting 부분을 변경했다 Dollar -> Money
이후 Money 클래스로 메서드를 옮겼다.
이제 Franc에도 적용해보자. 그에 앞서 우리는 코드를 변경하기 전에 애초에 그곳에 있어야 했던 테스트를 작성할 것이다.
충분한 테스트가 없다면 지원 테스트가 갖춰지지 않은 리펙토링을 만나게 될 수 밖에 없다.
리펙토링하면서 실수했는데도 여전히 통과할 수도 있는 것이다.
있으면 좋을 것 같은 테스트를 작성하라. 그렇지 않으면 리펙토링하다 뭔가 깨트리고 리펙토링을 덜 하게 된다.
리펙토링을 적게하면 설계의 질이 저하된다.
Franc도 Money를 상속받게 변경한다.
- $5 + 10CHF = $10(환율이 2:1일 경우)
$5 X 2 = $10amount를 private로 만들기Dollar 부작용?- Money 반올림?
equals()- hashCode()
- Equal null
- Equal object
5CHF X 2 = 10CHF- Dollar / Franc 중복
공용 equals- 공용 times
- Franc와 Dollar 비교하기
이번장 정리
- 공통된 코드를 첫 번째 클래스(Dollar)에서 상위 클래스(Money)로 단계적으로 옮겼다.
- 두 번째 클래스(Franc)도 Money의 하위 클래스로 만들었다.
- 불필요한 구현을 제거하기 위해 전에 두 equals() 구현을 일치시켰다.
'책 스터디 > [완료] 테스트 주도 개발' 카테고리의 다른 글
테스트 주도 개발 - 1부 8장 (0) | 2022.09.07 |
---|---|
테스트 주도 개발 - 1부 7장 (0) | 2022.09.07 |
테스트 주도 개발 - 1부 5장 (0) | 2022.08.30 |
테스트 주도 개발 - 1부 4장 (0) | 2022.08.30 |
테스트 주도 개발 - 1부 3장 (0) | 2022.08.30 |
Comments