2017-01-26 1 views
2

나는 그 순간에 더 많은 소개 자바 클래스를 사용하고 있는데, 이것은 클래스가 간단히 다음을 정의한 방법이다.응집력 및 커플 링 - 임계 값은 어떻게 결정됩니까?

응집력 : 높은 응집력을 목표로한다.이 경우 응집도는 하나의 모듈이 자신의 임무에 집중되어 있음을 의미한다.

커플 링 : 낮은 커플 링을 목표로합니다.이 경우 커플 링은 두 개 이상의 모듈이 얽혀있는 정도의 정도를 의미합니다.

결합 성뿐만 아니라 결합 성의 수준을 어떻게 결정합니까?

예를 들어, 내 메서드 중 일부는 같은 클래스에있는 다른 메서드를 호출합니다. 즉, 다른 메소드를 호출하는 메소드는 "호출"메소드가 코드 블록을 완료하기 위해 다른 메소드에 종속됩니다. 이것은 내가 동일한 등급의 방법에 대해 낮은 결합력과 높은 결합력을 가지고 있다는 것을 의미합니까? 또는 이러한 개념이 다른 클래스와 패키지를 더 많이 참조합니까?

+0

클래스/모듈 문제이며 메서드 문제는 아닙니다. – Kayaman

+0

고마워요! 수업 노트에 그다지 명확하지 않았으므로 확인하고 싶었습니다. 내가 알아야 할 개념에 중요한 것이 있습니까? – simmonson

답변

1

응집력/결합력에 대한 측정 항목이 있습니다. https://softwareengineering.stackexchange.com/questions/151004/are-there-metrics-for-cohesion-and-coupling을 참조하십시오.

따라서 응집력/결합 수준을 "결정"하는 방법은 각 측정 항목을 측정하는 도구를 구현하는 것입니다. (또는 예를 들어.이 작업을 수행 기존 도구, 수중 음파 탐지기를 찾을 수 있습니다.)

어떻게 하나의 응집 및/또는 커플 링의 수준에 대한 임계 값을 결정 하는가?

나는 당신이 코드 메트릭에서 각 메트릭의 값을 "용인 할 수없는"것으로 부를 때 어떻게 결정할 것이라고 생각하십니까?

기본적으로 결정하는 것은 사용자의 몫입니다. 도구가 "나쁜"값을보고하는 예제를보고이를 실제로 생각한 것이 얼마나 나쁜지를 결정하면됩니다. 또는 사용중인 도구의 기본 임계 값을 계속 사용하십시오.

+0

건배 ... 나는 이것을 더 연구 할 것이다! – simmonson

3

코드의 각 라인은 특정 의미와 목적을 가져야하며 각 메소드는 특정 의미와 목적을 가져야하며 각 클래스는 특정 의미와 목적을 가져야하며 각 패키지에는 구체적인 의미와 목적에 따라 각 코드 저장소는 구체적인 의미와 목적을 가져야합니다.

이것은 메소드가 다른 메소드를 호출해서는 안되며 클래스가 다른 클래스를 사용해서는 안된다는 것을 의미하지는 않는다. 오히려 이상적인 방법은 호출하는 다른 모든 메소드를 읽지 않고 클래스를 읽고 읽고 이해할 수 있어야한다는 것입니다.

더 큰 단위의 경우 더 큰 응집력과 감 결합력 : 클래스는 합리적인 크기의 클래스를 가정하기 때문에 메서드보다 훨씬 밀접하고 훨씬 밀접하게 결합해야합니다. 클래스간에보다 쉽게 ​​앞뒤로 이동할 수 있습니다. 당신이 코드를 읽고 유지할 때.

+0

건배, 제 질문에 대답 한 것만 큼 당신은 아마 Java에 대해 아주 익숙하다고 말할 수 있습니다 ... 저는 IE Software Engineers를위한 Reddit AMA를 읽었으며 많은 레거시 코드가 있다고 언급했습니다. 내 추측은 결속력과 결합력의 수준에 기인하지만 다시는 내 경험에 비추어 볼 때 무엇이든 짐작할 만하다. – simmonson

1

내가 틀릴 수도 있지만, 여기는 내 겸손한 입력입니다.

응집력은 커플 링과 함께 종종 언급되지만, 역 관계가 있습니다. 높은 응집력 == 낮은 커플 링.

나에게 하나의 모듈이 긴밀 작업에 초점을 맞추고 있음을 의미한다이 경우 응집력에, 높은 응집력 당신에게

목표를 인용 해보자.

그래서 그냥 그런 뜻입니다. 한 가지만하고 잘합니다. 예를 들어 데이터베이스에 엔터티를 저장하는 방법은 해당 엔터티를 데이터베이스에 저장하는 방법에만 초점을 맞추고 해당 엔터티의 정확성을 염려해서는 안됩니다 (모든 엔터티 인스턴스 특성이 모든 데이터베이스 스키마 유효성 검사를 통과하는지, 이 경우 유효성 검사는 인터셉터에 의해 처리되어야 함).

커플 링이 개 모듈은 서로에, 적어도 더 나은이 낮은 커플 링 이벤트를 사용하여 달성 종종 시간 등 유지 보수 및 재사용 성을 촉진하기 때문에, 우리는 이벤트 이미 터를 가지고 의존하는 정도를 말한다 이벤트 소비자이며, 서로에 대해 알 필요가 없습니다. 심지어 에미 터는 번이고 잊어 버리고이며 소비자는 시스템에서 이벤트를 전달할 때 이벤트를 가져옵니다.

+0

감사합니다. 나는 정의를 이해하고 직장에서 본 것들을 기반으로합니다 (엔지니어가 아닌, 예술가) 게임 엔진의 논리는 화재와 잊기 개념에 크게 의존합니다. 나는 이것을 더 공부할 것이다 ... – simmonson

관련 문제