[클린아키텍쳐 4부] 컴포넌트 원칙 정리

hodu·2023년 1월 5일
0

클린아키텍쳐

목록 보기
1/2

컴포넌트 원칙(클린아키텍쳐 4부)

(12장) 컴포넌트

  • 컴포넌트 : 배포단위, 배포할 수 있는 가장 작은 단위
    잘 설계된 컴포넌트는 독립적으로 배포가능한, 따라서 독립적으로 개발 가능한 능력을 갖춰야 함

(13장) 컴포넌트 응집도

어떤 클래스를 어느 컴포넌트에 위치시킬지를 결정해줌

REP(재사용,릴리즈 등가원칙)

- 릴리즈 절차를 통해 추적관리를 하고, 릴리즈 번호를 부여하여 컴포넌트를 재사용하세요

CCP(공동 폐쇄 원칙)

- 동일한 시점에 변경되는 컴포넌트들을 묶어라
- 다른 시점에 다른 이유로 변경되는 컴포넌트들은 분리해라

CRP(공통 재사용 원칙)

- 클래스, 모듈을 어느 컴포넌트에 위치시킬지 결정할 때 도움이 됨
- 같이 재사용되는 경향이 있는 클래스와 모듈들을 같은 컴포넌트에 포함시킨다.

(14장) 컴포넌트 결합

컴포넌트 사이의 관계를 설명한다.

ADP(의존성 비순환 원칙)

- 컴포넌트는 의존성 그래프에 순환이 있어서는 안된다.
- 개발자가 여러명일 경우..
	👉 나는 잘 돌아가는 코드를 올렸지만 다른 사람이 겹치는 부분을 수정해 버린 경우 내 코드도 안돌아 갈 가능성이 높음(숙취 증후군)
    👉 이 문제를 해결하기 위해서 "독립된 컴포넌트"를 만들자.
    👉 독립된 컴포넌트들은 쌍방으로 의존하면 안되고, 역으로 의존해서도 안된다.
    👉 **의존성 비순환 법칙**
- 실제로는 개발을 할 때 바로 컴포넌트 단위로 나눌 수 없다. 유지보수의 중요성이 커지고 변동성이 걱정이 되었을 때 적용하게 됨.
- 즉, 의존성 구조는 코드를 짤 때 바로 적용하는 것이 아니라, 시스템의 논리적 설계, 즉 시스템이 성장하면서 같이 변경되어야 한다.

SDP(안정된 의존성 원칙)

- 안정성 : “쉽게 움직이지 않는” 모듈에 의존하도록 하자
- 안정성은 어떻게 측정하는가? 
  - 컴포넌트로 들어고 나가는 의존성의 개수를 세어봄
  - I = (Fan-out / (Fan-in + Fan-out))
  - 0과 가까워질수록 의존성이 없음
  
- 모든 컴포넌트가 안정적일 필요는 없음

SAP(안정된 추상화 원칙)

- 컴포넌트는 안정된 정도만큼만 추상화되어야 한다.
- 고수준 아키텍쳐, 정책은 반드시 안정된 컴포넌트에 위치해야 한다.
→ 이렇게 되면 그 정책을 포함하는 소스코드는 수정하기가 어려워진다,,
- 그래서 나온게 OCP(개방폐쇄원칙) → 추상클래스를 만들어라!
- 추상화 측정하기
  - A = Na / Nc (Na : 추상클래스 및 인터페이스 개수 Nc : 클래스 개수)
  - 0이면 추상클래스가 하나도 없다. 1이면 오로지 추상클래스만 포함한다.
  - 1일수록 안정적
👉 I : 0일수록 안정적, A : 1일수록 안정적  

- (0,0) → 고통의 구역, 안정적이지만 구체적이다. 뻣뻣한 상태
- (1,1) → 쓸모없는 구역, 최고로 추상적이지만 아무도 의존하지 않는다.
- 이 두 구역을 벗어나서 주계열 근처로 가야한다.
profile
안녕 세계!

0개의 댓글