구 심성
무언가가 많은 다른 물건 (많은 수의 구 심성 결합)을 사용한다면, 그러한 것들 중 하나라도 바뀌면 깨지기 쉽습니다.
불안정성 = 1
독립성
여러 가지 물건 (많은 수의 원심 분리기)에 의해 무언가가 사용된다면, 그것이 바뀌면 많은 것들을 깨뜨리기 쉽습니다.
불안정성 = 0
안정
"안정성"에 대한 마틴의 정의는 "변화하기 어렵다"와 "변화 할 이유가 거의 없음"의 이국적인 조화입니다. 그러나 그의 불안정성 지표는 "변화의 어려움"만을 설명합니다. "변경 사유"는 적절한 추상화 수준에서 인터페이스를 적절하게 디자인하고 사용자 엔드 요구 사항을보다 명확하게 이해하는 것과 같이 쉽게 계산할 수없는 요소와 더 관련이 있습니다.
따라서 낮은 구 심성 결합을 갖는 높은 구 심성 결합은 안정성을 제공합니다 (많은 물건을 깰 것이기 때문에 변경하기 어려운 것과 같음), 반대의 수율 불안정성 (많은 물건을 끊지 않기 때문에 변경하기 쉬운 것) .
많은 수의 구 심성 커플 링은 설계에 초점이 없다는 지표 일 수 있습니다. 이는 여러 가지 다른 재료를 사용하므로 명확하고 단일 한 책임이 없을 수 있습니다.
많은 수의 독립형 커플 링은 설계가 광범위하게 재사용되고 있음을 나타내므로 처음에는 정말 좋은 것으로 해석 될 수 있습니다. 그러나 모든 것을 망가 뜨리는 방식으로 디자인을 자주 바꾸고 싶은 유혹이 있다면 그것은 나쁠 것입니다. 따라서 많은 수의 독립형 커플 링을 사용하면 이러한 패키지가 "변경할 이유가 거의 없거나 전혀"없어야합니다. 디자인은 변경해야 할 이유가 전혀없는 이상적인 의미에서 안정적이어야합니다. 디자인도 변경하기가 매우 어렵 기 때문입니다.
안정적인 추상화 원리
의존성 반전 (자연스럽게 의존성 주입을 요구하는)과 SAP (안정적인 추상화 원칙)와 같은 개념은 의존성이 추상화를 향해 흐르고 있음을 암시합니다. 그리고 "변경할 몇 가지 이유"가있는 상황에서 "안정성"을 고려할 때 간단한 이유가 있습니다. 추상 인터페이스는 구체적인 세부 사항을 언급하지 않으며 "무엇이 무엇인지"대신 "무엇을해야하는지"에만 초점을 맞추므로 변경해야 할 이유가 적습니다. 마더 보드의 가속 그래픽 포트 (추상 인터페이스)에는 GPU에 연결하는 것보다 구체적인 변경 사항이 적은 이유가 있습니다 (구체적인 인터페이스).
재사용 성 대 재사용
Martin과 다소 충돌하는 것을 제안 할 수 있다면 나 자신의 개인적인 종류의 메트릭은 가장 재사용 가능한 라이브러리가 최소한 다른 코드를 재사용하려고 노력해야한다는 생각입니다. 이는 불안정성을 0으로 향하게합니다. 변경해야 할 최소한의 이유가있는 실제적인 이유 때문에 가장 배포하기 쉬운 라이브러리를 장려합니다. 십여 개의 다른 라이브러리에 의존하는 범용 범용 라이브러리는 변경해야 할 이유가 많으며 배포하기 어려운 어색하게 번들 된 배포판이 있습니다. 여기서의 차이점은 필자의 경우 "변경 이유"는 라이브러리의 안정적인 버전을 출시하려고하는 라이브러리 중심의 관점에서 나오기 때문에 구현까지 확장된다는 것입니다. Martin은 구현을 매우 별도의 부분으로 할인 할 수 있습니다.
배포 관점에서 구현과 인터페이스는 함께 흐려져 사용자 의존성을 안정적이거나 불안정한 라이브러리로 만듭니다. 인터페이스 관점에서는 인터페이스 만 사용되며 연관된 구현 세부 사항은 완전히 분리되어 있습니다.