예? 그러면 안되죠. 그렇게 하지 않기 위해서 '의존관계 역전' 알아야합니다.
의존 관계 역전이란,
1. 상위 모듈은 하위 모듈에 의존하지 않습니다. 둘 다 추상화(인터페이스 등)에 의존합니다.
2. 추상화는 세부사항에 의존하지 않습니다. 세부 사항이 추상화에 의존해야 합니다.
라고 하는데요.
이게 무슨 말이냐..를 이해해보자면, 만약 위 원칙을 지키지 않고서 외부 라이브러리를 이용해서 개발을 했다고 가정합시다. 그러면 외부 라이브러리가 하위 모듈이 됩니다. 내가 짠 코드는 상위 모듈이고요.
그런데 라이브러리 버전이 업데이트되어서 내가 사용한 라이브러리 모듈의 구체적인 세부 사항이 변경되는 경우가 생깁니다. 라이브러리에서 어떤 메서드를 가져다썼는데, 이게 갑자기 이름이 바뀌는 겁니다. (물론 제대로 잘 유지되는 저장소라면 하위 호환에 deprecation warning 도 하고 하겠지만요) 그러면 그 모듈을 사용하는 내가 짠 코드(상위 모듈)가 변경되어야 합니다.
그러면 어떻게 해야할까요? 외부 라이브러리에 변경이 있더라도 추상화된 interface를 이용해서 내 main 코드는 변경할 필요가 없도록 해야한다는(의존성을 역전시켜야 한다는) 말입니다.
이전에 python으로 의존성 역전 예시를 만들었던 글을 공유합니다.