[Clean Architecture] 13장 컴포넌트 응집도

soohee·2022년 5월 11일
0

클린아키텍처

목록 보기
12/15

REP : 재사용/릴리스 등가 원칙

재사용 단위는 릴리스 단위와 같다

아키텍처의 관점에서 단일 컴포넌트는 응집성 높은 클래스&모듈로 구성되어야 한다.

즉, 공유하는 중요한 테마나 목적이 같은 것끼리 구성되어야한다는 뜻이다.

따라서, 하나의 컴포넌트로 묶인 클래스와 모듈은 버전 번호가 같고, 동일한 릴리스로 추적된다.

CCP : 공통 폐쇄 원칙

동일한 시점에 동일한 이유로 변경되는 것들을 한 데 묶어라.

서로 다른 시점에 다른 이유로 변경되는 것들은 서로 분리하라.

CCP = 컴포넌트 수준의 SRP이다.

즉, 유지보수성 >>>> 재사용성 이므로, 둘다 변경의 이유가 여러개 있어서는 안된다고 말한다.

CRP : 공통 재사용 원칙

컴포넌트 사용자들을 필요하지 않는 것에 의존하게 강요하지 말라.

같이 재사용되는 경향을 가진 클래스와 모듈은 같은 컴포넌트에 포함되어야 한다.

만약, A 컴포넌트가 B 컴포넌트를 사용하게 되면, 두 컴포넌트 사이에는 의존성이 생기는데,

A 컴포넌트가 B의 모든 클래스에 대해 의존함을 확실히 알아야한다.

CRP는 어떤 클래스를 한 곳에 묶어서는 안되는지에 대해 말한다.

CRP ⊃ ISP 관계이다.

컴포넌트 응집도에 대한 균형 다이어그램

  • REP와 CCP는 포함 원칙이다 → 컴포넌트를 더욱 크게 만듦
  • CRP는 배제 원칙이다. → 컴포넌트를 더욱 작게 만듦

아래 그림은, 균형 다이어그램으로, 각 변은 반대쪽 꼭지점의 원칙을 포기했을때 감수해야하는 비용을 나타낸다.

결론

클래스를 묶어 컴포넌트를 만들때, 재사용성과 개발 가능성이라는 상충하는 힘을 반드시 고려해야한다. 애플리케이션 요구에 맞게 이 두 힘의 균형을 잡는 일은 중요하다.

주로, 프로젝트의 초점이 개발 가능성에서 재사용성으로 바뀌고, 그에 따라 컴포넌트를 구성하는 방식도 조금씩 흐트러지고 또 진화한다.

profile
🐻‍❄️

0개의 댓글