도입
혼돈
- 소프트웨어는 혼돈 상태로 향하려는 경향이 있다.
- 계층화된 구조를 잡아도 edge 케이스를 처리하기 위해 유틸 클래스와 Manager 클래스가 난무하게 된다.
- 일관된 구조를 가질 수 있도록 계속 신경을 써줘야한다.
- 혼돈 상태나타내는 용어로
big ball of mud
가 있다.
대응책1. 캡슐화와 추상화
- 데이터와 행위를 한곳에 묶고 내부 구현을 숨김으 단순화할 수 있다.
- 이 단순화를 추상화로 볼 수 있다.
- 추상화는 표현력을 높인다.
대응책2. 계층화
- 계층을 나눠 범주(카테고리)를 만들어 관리한다.
대응책3. 의존성 역전 원칙(DIP)
- 고수준 모듈이 저수준 모듈에 의존하지 않고 두 모듈은 추상화에 의존한다.
- 저수준 모듈에 변경이 있어도 고수준 모듈에는 영향이 없다.
- e.g. 비지니스 계층 변경을 하지 않아도 인프라 세부사항을 변경할 수 있다.
대응책4. 도메인 모델
- 도메인 모델에 비지니스 로직을 구현함으로 산발적으로 비지니스 로직이 흩어지는 것을 막는다.
- 비지니스 로직 변경이 쉬워진다.