일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 읽기
- 미드시청
- 괜찮음
- leetcode
- 쓰릴오브파이트
- 3줄정리
- 운동
- 뭐든
- 프로젝트
- 10분
- 개발자
- 스탭퍼
- 영어원서읽기
- 월간
- Daily Challenge
- 파비최
- 매일
- 링피트
- Problem Solving
- realclass
- 30분
- Writing
- 사이드
- English
- 화상영어
- 잡생각
- FIT XR
- 만화도
- 영어공부
- 리얼 클래스
- Today
- Total
파비의 매일매일 공부기록
파이썬으로 살펴보는 아키텍처 패턴 - 3장 #1 본문
3장은 결합과 추상화에 대한 내용이다.
저장소 패턴은 영구 저장소에 대한 추상화다. 좋은 추상화를 만드는 요소 및 추상화로부터 얻으려는 게 무엇인지, 그리고 테스트와 추상화는 어떤 연관이 있는지 알아본다.
저자가 말하고자 하는 핵심 주제는 '멋진 패턴 사이에 감춰져 있지만 지저분한 세부 사항을 감추기 위해 간단한 추상화를 사용할 수 있다.'이다.
만약 실무에서 B 컴포넌트가 깨지는 게 두려워 A 컴포넌트를 변경할 수 없는 경우를 '결합'이라고 함.
지역적인 결합은 좋음. 각 컴포넌트가 서로 지원하며 맞물려 돌아가는 경우 결합된 요소들 사이에 '응집'이 있다고 한다.
그러나 전역적인 결합은 성가신 존재. 코드를 변경하는데 드는 비용 증가함. 결국에는 코드를 변경할 수 없는 지경에 이를 수 있음.
추상화를 통해 세부 사항을 감추면 시스템 내 결합 정도를 줄일 수 있음.
3.1 추상적인 상태는 테스트를 더 쉽게 해 준다.
- 두 파일 디렉터리를 동기화시키는 경우를 예로 들어 코드를 작성한다.
- 그러나 이렇게 작성된 코드는(저자가 제시한) 테스트가 충분치 않을뿐더러 확장성도 좋지 않다.
- 또한 고수준 코드가 저수준 세부 사항과 결합되어 있어서 코드 수정이 더 고달플 수 있다. 다뤄야 할 시나리오가 복잡할수록 테스트 작성이 더욱 어려워진다.
3.2 올바른 추상화 선택
- 테스트하기 쉽도록 코드를 다시 작성하기 위한 방법에 대해 고민해본다.
- 추상화를 하면 지저분한 세부 사항을 감추고 로직에만 초점을 맞출 수 있다.
- 무엇을 원하는가와 원하는 바를 어떻게 달성할지를 분리한다.
다음 포스팅에서는 3.2에서 선택한 추상화를 구현할 예정이다.
'Study > Python' 카테고리의 다른 글
파이썬으로 살펴보는 아키텍처 패턴 - 4장 #1 (0) | 2021.10.08 |
---|---|
파이썬으로 살펴보는 아키텍처 패턴 - 3장 #2 (0) | 2021.10.07 |
파이썬으로 살펴보는 아키텍처 패턴 - 2장 #3 (0) | 2021.10.04 |
파이썬으로 살펴보는 아키텍처 패턴 - 2장 #2 (0) | 2021.10.03 |
파이썬으로 살펴보는 아키텍처 패턴 - 2장 #1 (0) | 2021.10.02 |