Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

결합도와 응집도 #9

Open
eunaJung01 opened this issue Mar 9, 2022 · 3 comments
Open

결합도와 응집도 #9

eunaJung01 opened this issue Mar 9, 2022 · 3 comments

Comments

@eunaJung01
Copy link
Member

eunaJung01 commented Mar 9, 2022

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


  • 결합도(Coupling)

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

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

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

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


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

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

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

@YoumHyeJi
Copy link

결합도는 서로 다른 모듈 사이의 의존 정도이고, 응집도는 같은 모듈 내부 요소들 사이의 의존 정도를 의미하는 구나!

결합도를 낮추려면 SOLID 원칙 중 의존관계-역전 원칙(Dependency inversion principle)을 잘 지켜야 한다고 생각해.
이 원칙은 추상화(인터페이스)에만 의존하고 구체화(구현 객체)에 의존하면 안된다는 원칙이래.
이 원칙을 지키면서 의존 관계를 스프링 컨테이너가 관리하면, 두 모듈 사이에 의존성이 약해지겠지??

응집도를 높이려면 SOLID 원칙 중 단일-책임 원칙(SRP, Single Responsibility Principle)을 잘 지켜야 한다고 생각해.
하나의 모듈이 하나의 책임과 목적으로만 연결되어 있으면, 응집도가 올라갈 거 같아!
근데 모듈 하나의 크기가 너무 작으면 클래스 수가 많아지니까.. 그 크기를 적절하게 설정해야겠다... ㅎ

@ksi05503
Copy link
Contributor

ㄴ동의동의! 결합도와 응집도를 극한으로 연출한 객체가 POJO 가 되는건데, POJO 만으로 어플리케이션을 구성할 수 없는것처럼 , 요구사항에 맞게 모듈 크기를 정하는게 중요할듯!

@bong01
Copy link
Member

bong01 commented Mar 29, 2022

단일 책임 원칙에 따라서 분리하는 것이 중요할 듯!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants