콩딱일상

의존성: 잘 모르겠다. 어느정도 수준이여야 하는지 본문

소프트웨어/의존성

의존성: 잘 모르겠다. 어느정도 수준이여야 하는지

콩이캠퍼 2024. 1. 11. 22:38

사실 매우 광범위 하기도 하면서 한편으로 귀찮고 어려운게 바로 의존성을 관리하는 거라고 생각된다.

그래서 아예 의존성을 카테고리로 만들어 버렸다. 

 

SOLID원칙은 굳이 이야기 하지 않아도 될것이라 생각한다.

 

interface를 정의하고 사용한다는것 상세한 구현이 아니라 명세?에 의존해야 한다는것 실제로 적용을 해보면 막막한 부분들이 나오는것 같다.

 

interface로 구현한다는건 결국 세부 구현에 대한 의존을 줄이고, 변경 가능하고, 유연한 기능을 제공하기 위한 것으로 생각된다.

유연하고 변경가능하다. 결국 확장성, 유지보수성, 작업의 분배, 테스트 와 관련이 있는것 아닐까?

 

실무에서 정해진 스팩이 있는 상황에서 무조건 유연해야 하는지는 약간 의문이 들때가 있다.

물론 변경 가능할수도 있다는건 알고 있다. 하지만 현재의 구조가 완전히 제약적인 경우만 아니라면 어느정도 허용하기도 하는것 같다.

 

예를들어 어떠한 기능은 암호화가 필요하다. 암호화가 필요한 경우 AES, DES, RSA, ECC등 유연하게 받아들여야 한다면 결국 interface를 정의하고, DI를 걸어야 하는 상황이 온다.

 

그런데 DI를 많이 걸면은 생성자가 이쁘지 않다. 그러면 결국 추상화 레벨을 나눠주어야 한다.

그러면... 사용하기 힘들어진다.

 

어느 정도 까지만 해야하는걸까? 아니면 아예 class설계가 잘못된 것일까? SRP를 위반하진 않았지만 A class와 DI를 거는 I1, I2, I3 간의 추상화 레벨의 차이로 인한것일까?