티스토리 뷰
오늘은 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
- 224,387
- Today
- 10
- Yesterday
- 65
- spring boot
- 독후감
- S68
- AWS
- 회고
- 웹을 지탱하는 기술
- AWSKRUG
- springboot
- rest
- 사누르
- hands-on
- html
- container
- sanur
- Bali
- 개발자
- 발리
- ChatGPT
- ecma6
- 실수노트
- 웹
- 객체지향
- 한달살기
- ES6
- javascript
- 컨테이너
- Clean code
- 도커
- spring
- Docker