반응형
응집도, 결합도
- 좋은 소프트웨어 설계를 위해서는 결합도는 낮추고 응집도는 높이는 것이 바람직하다.
결합도
- 모듈(클래스) 간의 상호 의존 정도로서 결합도가 낮으면 모듈간의 상호 의존성이 줄어들어 객체의 재사용이나 수정, 유지보수가 용이하다.
- 두 개의 요소에 대해서 하나의 변경이 다른 것의 변경을 요구하는 정도.
- 변화가 전파되는 정도. 일종의 파급효과.
응집도:
- 하나의 모듈 내부에 존재하는 구성 요소들의 기능적 관련성으로 응집도가 노퓨은 모듈은 하나의 책임에 집중하고 독립성이 높아져 재사용이나 기능의 수정, 유지보수가 용이하다.
- 응집이란 시스템에 변경이 필요할 때 하나의 요소에서 변화하는 부분의 정도.
- 쉽게 말하자면, 한가지 변경 요청에 대해서 변경이 일어날 때 전체가 다 같이 변하면 응집도가 높은 것이고, 작은 부분만 변경이 일어나면 응집도가 낮은 것이다.
- 높은 응집도가 좋은 이유는, 변화의 요청에 대한 대응이 명확해지기 때문이다. 만약 응집도가 낮아서 어떤 변경에 대해서 한 요소의 일부분만 변경이 일어나게 된다면, 그 중에서 어떤 부분이 변경이 되야 할지를 파악해야 하고, 그것이 그 변경되지 않은 부분에 정말 영향을 미치지 않았는지에 대해서도 검증을 해야 할 부담이 있기 때문이다.
- 변하려면 전체가 같이 변하는 것이 부분만 변경되는 것보다 비용이 적게 든다는 것이다. 보통 덩치가 큰 모듈은 이런 단점을 가진다.
결론:
- 켄트 벡은 결론에서 비용의 관점을 봤을 때 낮은 응집도(큰 모듈) 보다는 높은 결합도(여러 요소에 걸처 변화의 파문이 일게 되는 것)가 훨씬 큰 비용증가(기하급수적으로)를 보인다고 이야기 했다.
참고 자료
반응형
'Java' 카테고리의 다른 글
쓰레드와 프로세스, 그리고 자바 비동기 API (4) | 2020.03.10 |
---|---|
자바 링크 (0) | 2020.03.06 |
Item 35. int 상수 대신 열거 타입을 사용하라 (0) | 2020.03.04 |
빌더 메서드로 배열을 리스트로 만드는 법 (0) | 2020.02.25 |
SOLID (2) | 2020.02.08 |