-
Notifications
You must be signed in to change notification settings - Fork 0
컴포넌트 원칙
Jaeyong edited this page May 19, 2022
·
2 revisions
- 임시방편적으로 결정을 내리기보다 원칙을 따라보자.
- 컴포넌트 응집도와 관련하여 3가지 원칙이 있다.
재사용 단위는 릴리스 단위와 같다.
- 배경 : 재사용 가능한 컴포넌트나 컴포넌트 라이브러리가 많이 만들어지면서 모듈 관리 도구가 등장한다. 컴포넌트들을 관리하기 위해 번호를 붙이기 시작한다.
- 릴리스 번호를 이용하여 서로 호환되는 지 보증이 가능하다.
- 소프트웨어 개발자들이 변화를 인지하고 기존 버전을 계속 쓸지 여부를 결정하게 한다.
- (소프트웨어 설게, 아키텍처 관점) 단일 컴포넌트는 응집성 높은 클래스와 모듈들로 구성되어야 한다.
- 하지만 이 원칙 하나만으로 단일 컴포넌트를 묶는 방법을 제대로 설명하기 힘들다. 그리고 이 원칙은 너무 당연해보인다.
동일한 이유로 동일한 시점에 변경되는 클래스를 같은 컴포넌트로 묶어라. 서로 다른 시점에 다른 이유로 변경되는 클래스를 다른 컴포넌트로 분리하라.
- SRP원칙과 비슷하게 단일 컴포넌트는 변경의 이유가 여러개 있어서는 안된다.
- 유지보수성은 재사용성보다 훨씬 중요하다.
- 그러므로, 변경이 여러 컴포넌트에 분산되어 발생하기보다는, 차라리 변경 모두가 단일 컴포넌트에서 발생하는 편이 낫다.
- 변경될 가능성이 있는 클래스는 모두 한 곳으로 묶는다.
- OCP원칙의 '폐쇄'와 같은 의미로 동일한 유형의 변경에 대해 닫혀 있는 클래스들을 하나의 컴포넌트로 묶는다는 뜻
컴포넌트 사용자들을 필요하지 않는 것에 의존하게 강요하지 마라.
- 재사용되는 클래스와 모듈은 같은 컴포넌트에 위치시켜야한다.
- 하지만, 어떤 컴포넌트가 다른 컴포넌트를 사용한다면, 두 컴포넌트 사이에는 의존성이 생긴다. 단 하나의 클래스만 사용해도 의존성은 그대로다.
- 강하게 결합되지 않은 클래스들을 동일한 컴포넌트에 위치시켜서는 안 된다고 한다...
- 이게 무슨 뜻일까?
- 그니까 컴포넌트끼리 의존하지 않도록 계속 분리하라는 뜻.
- 책에서 한마디로 정리해준다.
필요하지 않은 것에 의존하지마라.
- REP와 CCP는 포함 원칙으로 컴포넌트를 크게 만들고, CRP는 배제 원칙으로 컴포넌트를 더욱 작게 만든다. 이들의 균형을 찾아야 한다.
- CRP에 집중하면 사소한 변경이 생겼을 떄 너무 많은 컴포넌트에 영향을 미친다.
- CCP에 집중하면 불필요한 릴리스가 너무 빈번해진다.