brunch

You can make anything
by writing

C.S.Lewis

by 김재즈 Mar 29. 2018

상호 참조

나도 너를 알고, 너도 나를 아는

생각 없이 열심히 구현하다 보니 독립된 모듈 두 개가 상호 참조(circular dependency)에 걸려버렸다.


gradle 이면 아래와 같은 메시지를 볼 수 있을 거다.

Circular dependency between the following tasks:


왜 생기는가?

A모듈이 B모듈을 참조하고 있고 동시에 B모듈도 A모듈을 참조하고 있는 경우이다.


그러면 안되는가?

A모듈을 빌드하려면 B모듈을 빌드해야 하는데 B모듈을 빌드하려면 A모듈을 빌드해야 하고,

다시 A모듈을 빌드하려면 B모듈을 빌드해야 하는 무한 루프에 빠져버린다.


어떻게 해야 하는가?

1. 일단 그러면 안된다.

2. 근데 꼭 필요하다?

꼭 필요한 경우에는 A 따로 빌드하고, B 따로 빌드하면 된다. 계속, 영원히.


1. 일단 그러면 안된다.

문제를 천천히 다시 생각해봐야 한다. '정말로 필요한가?' A가 B를 왜 필요로 하는가? B가 A를 왜 필요로 하는가?

그리고 의존관계를 한 방향으로 풀어야 한다. A에서 B를 의존하거나, B에서 A를 의존하는 방식으로 바꿔야 한다.


1. 일단 그러면 안된다. 2

A와 B의 의존관계를 관리하는 C를 만들어 위임을 해보자. C가 점점 핫플레이스가 될 것 같다. 



읽어보면 좋을만한 글

Code Organization & Cyclic Dependency Problem

http://hyper-cube.io/2018/03/30/circular_dependency/


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari