컴포넌트 설계 원칙
content
응집도 높은 컴포넌트를 설계하려면, 1) REP 2) CCP 3) CRP 원칙을 기억해야한다. 세 원칙은 상충하기에 설계 목적에 따라 세 원칙간 균형을 잡아야한다.
컴포넌트의 결합을 잘 설계하려면, 1) ADP 2) SDP 3) SAP 를 이해해야한다. ADP(Acyclic Dependencies Principle)은 컴포넌트 간 의존성이 순환하지 않도록 하여 컴포넌트 간 의존을 끊는 최소한의 규칙이고, SDP(Stable Dependencies Principle)은 안정된(변화가 적은) 모듈이 불안정한(변화가 많은) 모듈에 의존하지 않도록 설계하는 규칙이다. 그리고 SAP(Stable Abstraction Principle)는 안정성과 추상화 정도 사이의 관계를 정의하는데, 불안한(변경이 잦은, 다른 컴포넌트에 많이 의존하고 있는) 컴포넌트는 구체적이어도 괜찮지만, 안정적인(변경이 적은, 다른 컴포넌트가 많이 의존하는) 컴포넌트는 추상화하여 쉽게 확장 가능하도록 해야한다.
컴포넌트 레벨에 DIP를 적용하면 SDP와 SAP를 지키는데 용이하다. 결국 같은 말인데, DIP = 추상적인 것에 의존하라 = 안정적인 것에 의존하라 + 안정적인 것은 추상화해라.