응집력과 결합에 대한 지표가 있습니까?


답변:


29

찾고있는 메트릭은 LCOM4이지만 클래스에 더 많이 적용됩니다.

소나는 멋지게 설명 여기 :

... metric : LCOM4 (Lack Of Cohesion Methods)는 응집력 등급을 측정합니다. 값 1은 클래스에 하나의 책임 (좋은) 만 있고 값 X는 클래스에 X 책임 (나쁜)이 있고 리팩토링 / 분할되어야 함을 의미하므로이 메트릭을 해석하는 것은 매우 간단합니다.

여기에는 마법이 없으며 상식 만 있습니다. Driver 클래스로 간단한 예제를 보자. 이 클래스에는 Car와 Brain의 두 가지 필드와 drive (), goTo (), stop (), getAngry () 및 drinkCoffee ()의 5 가지 메소드가 있습니다. 다음은 이러한 구성 요소 간의 종속성 그래프입니다. 관련 구성 요소에는 세 가지 블록이 있으므로 LCOM4 = 3이므로 클래스는 서로 다른 세 가지 책임이 있으며 단일 책임 원칙을 위반합니다. http://i.stack.imgur.com/2527G.png

...

사용할 수 있다면 훌륭한 도구입니다. :)


@OnorioCatenacci 문제 없습니다. :)
Oleksi

너무 나쁘면 메트릭을 계산하는 방법에 들어 가지 않습니다.
Onorio Catenacci

3
그와 함께이 힘 도움말 : aivosto.com/project/help/pm-oo-cohesion.html
Oleksi

호기심에서, 단일 책임 원칙을 준수하기 위해이 다이어그램을 어떻게 리팩토링 하시겠습니까? brain.setAngry(driver)? car.applyBreaks(driver)?
Phil

나는 그 코드 기반의 응집력 측정이 진정으로 인터페이스 수준의 응집력을 표시 할 수 있습니다 의심, 심지어 나쁜 프로그래밍을 촉진 할 수 있습니다 mortoray.com/2015/04/29/...
EDA-QA 모트 - ORA-Y

16
  • 구 심성 커플 링 : 책임 수
  • 독립성 커플 링 : 종속성 수
  • 불안정성 : 전체 커플 링 대 총 커플 링의 비율 (Afferent + Efferent).

다양한 코드 메트릭 도구에서 불안정성이 지원됩니다.


@Brian에게 감사드립니다. 정확하게 내가 찾길 바랐습니다.
오노 리오 카테 나치
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.