해당 게시물은 인프런 "Java/Spring 주니어 개발자를 위한 오답노트" 강의를 참고하여 작성한 글 입니다.
1. SOLID
객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙이다. 언제나 마음에 달고 살자
참고: https://ko.wikipedia.org/wiki/SOLID_(%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%EC%84%A4%EA%B3%84)
2. 인터페이스 분리 원칙 (Interface segregation principle)
- 인터페이스: "이 기능을 사용하고 싶다면 이 방법을 사용하세요." 라고 알려주는 것이다.
- API도 하나의 인터페이스라고 볼 수 있다.
3. 의존관계 역전 원칙 (Dependency inversion principle)
- DI vs DIP?
- DI : Dependency Injection
- DIP : Dependency Inversion
참고 : https://velog.io/@betterfuture4/Spring-IoC-DI-DIP
4. 의존성을 드러내라
변하는 값인 시간을 드러냄으로써 의존성을 파악할 수 있다.
다른 사람이 코드를 봤을때 이해하기 쉽고, 테스트 코드를 작성하기 쉽다.
5. 의존성을 추상화 시켜라
의존성을 드러내기만 하면 폭탄돌리기 게임 발생한다.
의존성이 인터페이스가 되어있어서 추상화 되어있었다면, 주입 받아서 해결할 수 있다.
의존성을 추상화하여 주입 받음으로써 즉, 의존성 역전 원리를 이용하여 컴파일 타임과 런타임의 의존성을 다르게 할 수 있다.
인터페이스 분리 원칙과 의존관계 역전 원칙을 포함한 SOLID 원칙들은 코드의 결합도를 낮추고, 의존성을 관리하는 데 중점을 둔다. 이를 통해, 변경에 유연하게 대응할 수 있는 소프트웨어를 만들 수 있으며, 이는 장기적으로 프로젝트의 성공을 좌우하는 결정적 요소가 된다고 생각한다.