02. 의존성 역전하기

02. 의존성 역전하기

02. 의존성 역전하기 #

1장에서 계층형 아키텍쳐의 단점에 대해 살펴보았고, 이번 장에서는 ‘대안’(SRP, DIP) 에 대해 이야기한다.



단일 책임 원칙 (SRP) #

" 하나의 컴포넌트는 오로지 한 가지 일만 해야 하고, 그것을 올바르게 수행해야 한다. “

(실제로) 위 문장(하나의 컴포넌트는 오로지 한 가지 일을 해야한다.)은 ‘단일 책임 원칙의 실제 의도’는 아니다.

‘오로지 한 가지 일만 하는 것’은 단일 책임이라는 말을 직관적으로 해석한 것이다.


단일 책임 원칙의 실제 정의는 다음과 같다.

” 컴포넌트를 변경하는 이유는 오직 하나뿐이어야 한다. “

‘오로지 한 가지 일만 하는 것’ 보다는 ‘변경할 이유는 오직 하나’ 로 해석해야 한다.


컴포넌트를 변경할 이유가 오로지 하나라면, 자연스럽게 컴포넌트는 한 가지 일만 하게 된다.


‘변경할 이유’는 컴포터는 간의 의존성을 통해 너무도 쉽게 전파된다.

  • ‘결합도’가 커진다는 것은 ‘변경의 전파’가 커진다는 것을 의미하는 것과 같지 않을까?
    • 즉, ‘결합도 = 변경의 전파’

많은 코드는 SRP 를 위반하기 때문에, 시간이 지날수록 변경하기 더 어려워진다.



의존성 역전 원칙 (DIP) #

” 어떤 의존성이든 그 방향을 역전시킬 수 있다. “

사실 양쪽 코드를 모두 제어하고 있을 때에만 의존성을 역전 시킬 수 있다.
(= 예를 들어, 외부 라이브러리 처럼 우리가 컨트롤 할 수 없는 경우는 안됨을 의미한다.)


이후 그림 / 설명은 생략한다. (p16 ~ p17)



클린 아키텍처 #

여기서부터 다시 작성할 것!!



육각형 아키텍처 (헥사고날 아키텍처) #



유지보수 가능한 소프트웨어를 만드는데 어떻게 도움이 될까? #