-
11장 - DIP: 의존성 역전 원칙클린 코드(Clean Code)/클린 아키텍처요약 2022. 11. 27. 00:01
의존성 역전 원칙
추상화에 의존하며 구체에는 의존하지 않음을 의미합니다.
하지만 소프트웨어의 시스템은 많은 구체화에 의존합니다.
예를 들어 String은 구체 클래스이며 추상 클래스로 만들려는 시도는 현실성이 없습니다.
String 클래스는 매우 안정적으로 변경되는 일은 거의 없으며, 있더라도 엄격하게 통제됩니다.
따라서 DIP를 논할 때 OS나 플랫폼과 같이 안정성이 보장된 환경에 대해서는 무시하는 편입니다.
우리가 중요하게 생각해야 할 것은 열심히 개발중이라 자주 변경될 수밖에 없는 모듈들입니다.
DIP를 지키는 매우 구체적인 코딩 실천법
- 변동성이 큰 구체 클래스를 참조하지 말아야 한다.
- 변동성이 큰 구체 클래스로부터 파생하지 말아야 한다.
- 구체 함수를 오버라이드 하지 말아야 한다. (추상함수를 사용해라 - 구체 함수를 사용하는 순간 의존성을 부여받게 됨)
어쨌던 실제 인스턴스 생성은 필요하기 때문에 SpringFrameWork 등을 사용하지 않으면 절대적인 DIP를 지킬 수 없습니다.
하지만 하나의 설정 파일들에 모아넣는다면 시스템의 나머지 부분과는 분리할 수 있습니다.
개인적인 견해
String 클래스가 변한 일은 거의 없으나 내부적으로 어떤 문제가 발생하였고 Stirng 클래스에 의존하고 있는 다른 클래스들이 많다면 문제가 발생할 수 있다고 생각합니다.
참고 자료
https://victorydntmd.tistory.com/300
'클린 코드(Clean Code) > 클린 아키텍처요약' 카테고리의 다른 글
13장 - 컴포넌트 응집도 (0) 2022.12.14 12장 - 컴포넌트 (0) 2022.12.13 10장 - ISP: 인터페이스 분리 원칙 (0) 2022.11.26 9장 - LSP: 리스코프 치환 원칙 (0) 2022.11.25 8장 - OCP: 개방-폐쇄 원칙 (0) 2022.11.24