Skip to content

결합도와 응집도 #9

@eunaJung01

Description

@eunaJung01

[4.3.1 빈 생성 시 메서드 실행하기] 중 ‘이런 콜백 매커니즘은 같은 타입의 빈이 몇 개 안 되거나 애플리케이션이 스프링과 결합되지 않게 할 때 유용’하다는 말에서 결합에 대해 찾아보다가 객체지향에서 결합도응집도에 대한 개념이 중요한 것 같아 이슈로 올립니다.


  • 결합도(Coupling)

    모듈이 다른 모듈에 의존하는 정도의 척도 (모듈간의 상호 결합 정도)
    = 클래스 간에 얼마나 연결이 되어 있는가?

    • 결합도가 높다 = 객체를 사용자가 만든다 = 수정하기 어렵다
      (클래스 간 연결이 많다면 하나의 수정을 위해 많은 클래스들을 수정해야 함)
    • 결합도가 낮다 = 스프링 컨테이너가 객체를 관리한다 = 코드를 수정할 필요가 없다
  • 응집도(Cohesion)

    모듈에 포함된 내부 요소들이 하나의 책임/목적을 위해 연결되어 있는 정도

    응집도가 높을수록 변경 대상과 범위가 명확해지기 때문에 코드를 수정하기 쉬워진다


객체지향 설계 원칙(SOLID) 중 개방-폐쇄 원칙(OCP, Open-Closed Principle)은 객체의 확장에 대해서는 개방적으로, 객체의 수정에 대해서는 폐쇄적이어야 한다는 원칙입니다.

즉, 1. 애플리케이션의 요구 사항이 변경될 때 새로운 동작을 추가해 모듈을 확장할 수 있어야 하며
2. 기존 코드를 수정하지 않고 모듈의 기능을 확장하거나 변경할 수 있어야 한다는 것인데
이는 '결합도가 낮아야 하며, 응집도는 높아야 한다'는 말로 정리할 수 있을 것 같습니다.

결합도를 낮추고 응집도를 높이려면 코드를 어떻게 작성해야 하며 각각 어떤 사례가 있을지 같이 얘기해보고 싶습니다!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions