본문 바로가기
까망 동네/클린 코드

[클린 아키텍처] 6가지 컴포넌트 원칙

by 까망 하르방 2025. 10. 8.
반응형

컴포넌트 원칙 (Component Principles)

Robert C. Martin 제안한 컴포넌트 원칙으로

총 6가지인데 컴포넌트 응집성(Cohesion), 결합(Coupling) 관점으로 나눌 수 있다.

 

 

📌 컴포넌트 응집성(Cohesion) 원칙

1) REP (Reuse/Release Equivalence Principle, 재사용/릴리스 등가 원칙)

2) CCP (Common Closure Principle, 공통 폐쇄 원칙)

3) CRP (Common Reuse Principle, 공통 재사용 원칙)

 

📌 컴포넌트 결합(Coupling) 원칙

1) ADP (Acyclic Dependencies Principle, 비순환 의존성 원칙)

2) SDP (Stable Dependencies Principle, 안정된 의존성 원칙)

3) SAP (Stable Abstractions Principle, 안정된 추상화 원칙)


📌 컴포넌트 응집성(Cohesion) 원칙

REP (Reuse/Release Equivalence Principle, 재사용/릴리스 등가 원칙) 

•  “재사용 단위는 릴리스 단위와 같아야 한다.”
•  컴포넌트는 재사용 가능한 단위일 뿐 아니라 버전 관리되고 릴리스 가능한 단위여야 한다.

 

 

CCP (Common Closure Principle, 공통 폐쇄 원칙)

•  같은 이유로 변경되는 클래스들은 한 컴포넌트에 모으고
 다른 이유로 변경되는 클래스들은 분리하라.”
•  패키지에도 SRP(Single Responsibility Principle)를 적용하는 것.
•  변경 파급효과를 최소화하는 설계 원칙.

 

 

CRP (Common Reuse Principle, 공통 재사용 원칙)

• 함께 재사용되는 클래스만 같은 컴포넌트에 포함시켜라.

  불필요한 의존성을 줄이고, 꼭 같이 쓰이는 것들만 묶어서 재사용성 높임


📌 컴포넌트 결합(Coupling) 원칙

ADP (Acyclic Dependencies Principle, 비순환 의존성 원칙) 

•  컴포넌트 의존성 그래프에 순환(cycle)이 있어서는 안 된다.
 순환 의존성이 생기면 빌드/배포가 꼬이고, 변경 시 영향 범위가 커짐.
•  DIP(의존성 역전 원칙)를 활용해 추상화된 인터페이스를 중간에 두는 방법 사용하는 편
(❌) Component A → Component B → Component C → Component A
(⭕) Component A → Component B → Component C

 

 

SDP (Stable Dependencies Principle, 안정된 의존성 원칙)

• 안정성이 높은 컴포넌트에 의존하라.

• 자주 바뀌는 불안정한 컴포넌트가 안정된 핵심 컴포넌트에 의존해야 함

 

 

SAP (Stable Abstractions Principle, 안정된 추상화 원칙)

•  안정된 컴포넌트는 추상화 수준도 높아야 한다.

•  바꾸기 어려운 안정된 컴포넌트가 구체적(Concrete) 클래스만 많으면 확장 어려움.

 따라서 안정된 컴포넌트일수록 추상화(Interface, Abstract class) 통해 유연성 확보

 

 

📌 객체 지향 프로그래밍 5대 원칙 [SOLID]

 

객체 지향 프로그래밍 5대 원칙 [SOLID]

객체지향 프로그래밍에는 「SOLID」 원칙이 있다. 유연하고 확장성이 있는 코드 재사용에 목적을 둔다. • SRP (Single Responsibility Principle, 단일책임) • OCP (Open-Closed Principle, 개방-폐쇄 원칙) • LSP (L

zoosso.tistory.com

반응형

'까망 동네 > 클린 코드' 카테고리의 다른 글

[Clean Code] Comment Tags  (4) 2025.02.20
[클린코드] 객체와 자료구조  (0) 2022.07.19
[클린코드] 형식 (Format)  (0) 2022.07.18
[클린코드] 함수 Function  (0) 2022.07.18
[클린코드] 주석 Comment  (0) 2022.07.18

댓글