티스토리 뷰
오늘은 TDD 8장 까지 스터디를 하였습니다.
8장의 내용은 Dollar와 Franc이라는 각 지역별 화폐 객체에서 Money라는 상위클래스를 추출함으로써 한 단계 추상화하고 각 코드의 중복을 제거하는 부분이었습니다.
캔트 백은 중복을 제거하면서 상위 클래스에 펙토리 메서드를 만듭니다. 저는 이 부분이 너무 어렵게 느껴졌습니다. 과연 내가 그런 상황에서 펙토리 메서드를 생각해낼 수 있었을까 하는 의문이 들면서 말이죠.
좀 더 고민해보니까, 이런 결론을 얻었습니다.
추상화를 하고 나서 구상 클래스 (Concrete class)와 클라이언트 코드간의 의존성을 제가하는 것은 당연한 것이다. 펙토리 메서드를 생각해 낼수 있느냐의 문제가 아니고, 구상 객체와 클라이언트 코드간의 의존성 제거를 위해서 꼭 해야하는 일이다.
캔트 백이 한 일은 어려운 발상이 아니고 SOLID를 지키기 위해서 꼭 해야하는 작업이라는 생각을 하게 되었습니다. 해당 예제에서도 의존성 제거를 통해서 의존성이 역전되었고(DIP) 그로 인해서 Dollar와 Franc 말고도 다른 KRW(원 : 한국화폐단위)이나 EUR(유로 : 유럽연합화폐단위) 등을 추가하기 쉬운 구조가(OCP)가 되었습니다.
역시 TDD 좋은 책이네요.
'Software Design' 카테고리의 다른 글
독서노트 <UML Distilled - 마틴 파울러> - 1~2장 (0) | 2020.07.19 |
---|---|
신림프로그래머 클린코드 발표자료 공개 (0) | 2016.06.19 |
클린코드 4장 주석 정리 (0) | 2016.04.17 |
클린코드 1장에서 3장 정리 (0) | 2016.02.12 |
옵저버 패턴Observer pattern과 실제 예제 (0) | 2016.01.17 |
- Total
- Today
- Yesterday
- 사누르
- Clean code
- spring
- 실수노트
- 회고
- html
- 한달살기
- sanur
- 컨테이너
- 웹을 지탱하는 기술
- Bali
- 웹
- hands-on
- rest
- 발리
- Docker
- ecma6
- 객체지향
- 개발자
- ES6
- ChatGPT
- 도커
- container
- javascript
- AWSKRUG
- 독후감
- AWS
- springboot
- spring boot
- S68
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |