w1

Dependency

s00mm 2022. 9. 3. 13:32

Dependency (의존성, 종속성)

  • 두 모듈, 클래스 간의 연결 or 관계

 

재활용이나 효율을 높이기 위해 생겨난 개념으로 보인다.

무언가를 만들 때 이미 만들어진 기능이나 모듈을 활용하는 것이라고 생각하면 쉬운 듯하다.

 

차를 만드는 것을 가정해보자.
바퀴를 내가 만들기 보다 만들어진 바퀴를 사서 끼우면 빠르고 편하지 않겠는가?
그래서 바퀴는 직접 만들지 않고 사서 달기로 했다. 

어느날, 바퀴제조사는 더 좋은 바퀴를 만들기 위해  내가 사용하는 바퀴를 개선한다고 가로 폭을 넓혔다. 

아하.. 이를 어쩌나..
기존에 사용하던 바퀴에 맞춰서 만든 차체에 개선된 바퀴가 맞지 않는다.. 
차에 사용한 바퀴를 외부제조사에 의존하다보니 뜻하지 않은 문제가 생겨버렸다. 

이렇듯 외부의 것을 가져다 쓰는 의존성으로 인해 발생되는 문제를 의존성문제 라고 한다

 

반복적인 코드를 사용하지 않고 수정할 때의 편의성을 위해서

별도로 코드를 분리해두는 등의 코드 정리(리팩토링)를 한다.

이 경우, import 로 해결한다.

A.dart 파일을 작성하다보니 

일정 부분이 계속 반복되더라.

그래서 반복되는 부분을 B.dart 파일로 분리해두고

A.dart 파일에서는 "import  B"  B.dart 파일을 사용할꺼야... 라고 써두고

B의 코드가 사용되는 부분에서는 "B 파일을 참조해" 라고 해둔다. 

 

이렇게 B.dart 파일로 분리해둠으로써 

다른 파일에서도 B.dart 파일의 코드를 불러서 사용할 수 있게 된다. 

 

 

보다 범위 넓혀보면 우리는 많은 사람들이 만들어둔 훌륭한 라이브러리를 활용해서 코딩을 한다.

라이브러리 사이에도 의존성이 존재하게 된다.

나는 a라는 라이브러리를 사용했는대, a 는 c라는 라이브러를 활용해서 만들어졌을 수도 있다.

한 app 이 많은 라이브러리에 의존하게 됨에 따라, 많은 라이브러리를 다운받아서 설치해야 하게 되고,

하나를 설치하여 해결하면, 그 라이브러에 필요한 다른 라이브러리를 설치해야하는 상황이 발생하게 되는대

이런걸 보고 의존성지옥 (**dependency hell) 이라고 한다고.. ^^

 

[참고]

https://tony-programming.tistory.com/entry/Dependency-의존성-이란

https://www.lesstif.com/laravel9/dependency-hell-129007932.html