Programing

객체지향 응집도와 결합도

BUST 2018. 6. 13. 16:14

450px-Coupling_sketches_cropped_1.svg.png


객체지향적으로 모듈은 응집도가 높고, 결합도가 낮을수록 좋은 코드이다. 코드를 작성을 할때 자신의 작성하는 코드가 좋은 코드인지 나쁜 코드인지를 판단을 할수 있는 기준이 될수 있다.


응집도가 높은 코드, 결합도가 낮은 코드는

- 이해하기가 쉽다

- 수정하기가 쉽다

- 하나의 모듈에서 다른 모듈에서의 코드 연관이 많이 없다.

- 하나의 모듈 단위를 지웠을때 다른 모듈의 코드를 수정하지 않아도 된다.

- 하나의 기능을 수정한다면 하나의 모듈만 수정을 하면 된다.


응집도가 낮은 코드, 결합도가 높은 코드는

- 이해하기가 어렵다

- 수정하기가 어렵다

- 하나의 모듈 단위에서 다른 모듈 단위에서서의 코드 연관이 많이 있다.

- 하나의 모듈 단위를 지웠을때 다른 모듈의 코드를 수정을 해야 된다.

- 하나의 기능을 수정할려고 하면 여러개의 모듈의 수정해야 된다.



도메인 기반 개발 - Domain Driven Design에서의 응집도, 결합도

Domain Driven Design에서는 Aggregator에서의 Root Entity로만의 접근을 허용을 한다. (Entity로만의 logic이 구현이 되지 않는 경우에는 Domain Service로 구현할수도 있다)

Root Entity로의 접근만 허용하기 때문에 Aggregator의 내부 로직이 변경이 된다고 하더라도 Application Service (응용 서비스)에서의 코드의 수정은 없다.



'Programing' 카테고리의 다른 글

B tree, B+ tree  (0) 2018.08.25
At-least-once Delivery  (0) 2018.08.22
Reactive Programming  (0) 2018.08.19
DAG (Directed acyclic graph)  (0) 2018.08.06
LLVM  (0) 2017.06.25