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