728x90
반응형
의존성 주입에 대한 생각
오늘 회사에서 스프링 코어에 대한 얘기를 나누던 중 의존성 주입 얘기가 나왔고 그냥 생각나는 부분들에 대해서 끄적끄적해본다.
웹 개발을 하다보면 스프링 프레임워크 사용 여부와 상관없이 최소 한번 정도는 그 단어 Dependency injection(DI, 의존성 주입)를 보거나 듣게 된 경험이 있다고 생각하고 없다면 간첩 신고 하면 되나? 사실, 객체지향과 객체지향 원칙을 제대로 이해하고 있다면 의존성 주입은 학습을 통해 배우는 것이 아니라, 자연스럽게 코드에 녹아서 이미 그렇게 코드를 작성하고 있을 것이다.
의존성 주입이라는 개념만 단순히 학습하고 넘어가기보다는 객체지향의 본질과 원칙을 이해하는 데 학습의 초점을 맞추는 것이 훨씬 더 중요하다. 이 원칙들이 지켜지지 않으면 테스트 코드 작성, 유지보수, 가독성 모든 면에서 문제가 발생할 가능성이 크다. 객체지향을 충분히 이해한다면 의존성 주입은 단순히 객체지향 본질의 한 조각에 불과하다는 생각이 들 것이다. 아래 객체지향 원칙들이 잘 안 지켜졌을 경우 발생하는 상황이다.
- 테스트 코드 작성이 어렵다?
- 테스트 코드 모킹이 어렵다?
- 엑셀 추출 기능 하나 추가하는데 여러 곳에서 구현해야 한다?
- 버그 수정 해야하는데 어디를 고쳐야 하는지 쓱 따라가는데 한눈에 안 보인다?
- 동일 코드가 드래곤볼 하고 있다?
- ...
의존성 주입은 객체지향 프로그래밍의 본질을 실현하기 위한 하나의 개념일 뿐이다. 스프링 공화국인 만큼 스프링 공부를 할 때 의존성 주입에 대해서 공부를 하겠지만 의존성 주입 자체에 초점을 맞추기보다는 객체지향 원칙과 설계 철학을 충분히 이해하고 적용할 수 있는 것이 중요하다. 그렇게 할 때, 객체지향의 개념은 자연스럽게 녹아들어 훨씬 더 유연하고 유지보수 가능한 코드를 작성할 수 있게 도와줄 것이다.
728x90
반응형
'IT' 카테고리의 다른 글
멱등성 (Idempotence)와 HTTP API 설계 (0) | 2024.08.01 |
---|---|
[Jetbrains] Intellij 인텔리제이 Live Template 사용 방법 (1) | 2024.02.26 |
[통계] 정규화(Normalization)와 표준화(Standardization) (1) | 2023.12.04 |
[Kubernetes] OpenLens 설치 (0) | 2023.01.09 |
API, 서비스, 도메인 테스트 및 TDD 에서의 기어비 (0) | 2022.12.24 |