목차
728x90

SOLID 원칙이란?
객체지향적 프로그래밍에서 적용해야 할 핵심 5가지 원칙을 적용한 것으로, 소프트웨어 개발 전략의 일부입니다.
프로그래머가 시간이 지나도 유지 보수와 확장, 리팩터링이 쉬운 시스템을 만들기 위해 지켜져야 하는 원칙입니다.
S : SRP(Single Responsibility Principle) 단일 책임 원칙
"한 클래스는 하나의 책임만 가져야 한다"
- 모든 클래스는 하나의 책임만 가지며, 그 책임을 완전히 캡슐화해야 함을 의미합니다.
- 이러한 설계는 기능의 응집도를 올리며, 결합도는 감소시킵니다.
O : OCP(Open / Closed Principle) 개방-폐쇄 원칙
"소프트웨어의 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다"
- 올바르게 리팩토링해 이후의 수정을 유발하지 않도록 하자는 원칙입니다.
- 동시에 새로운 동작을 추가해 확장하는 행위에는 열려있어야 한다는 의미입니다.
- 해당 원칙을 잘 보여주는 기능은 객체지향 프로그래밍 언어의 추상화가 있습니다.
- 고정해도 제한되지는 않음
- 추상화의 새 파생 클래스를 만들어 확장이 가능함
L : LSP(Liskkov Substitution Principle) 리스코프 치환 원칙
"프로그램의 객체는 프로그램 정확성을 꺠뜨리지 않으면서 하위 타입의 인스턴스로 바꿀수 있어야 한다"
- 서브타입은 언제나 기반 타입으로 교체할 수 있어야 한다는 것을 의미합니다.
- 다형성을 지원하기 위한 원칙입니다.
- 예 1) 자바의 다형성 : 자식 클래스를 부모 클래스로 형변환(`cast`) 하는 것
- 예 2) 자바의 컬렉션 프레임워크에서 자식 클래스인 `LinkedList` 가 부모 클래스 `List`의 `add` 메소드 사용
I : ISP(Interface Segregation Principle) 인터페이스 분리 원칙
"특정 클라이언트를 위한 인터페이스 여러개가 범용 인터페이스 하나보다 낫다"
- 인터페이스를 초기 구성할 때 관련 기능끼리 모으되 지나치게 커지지 않도록 크기를 제한하라는 것입니다.
- 한번 인터페이스를 분리해놓고 수정사항이 생겨 인터페이스를 분리하면 안됩니다. → 문제 발생의 원인
D : DIP(Dependency Inversion Principle) 의존관계 역전 원칙
"추상화에 의존하되, 구체화에 의존하면 안된다"
- 상위 모듈은 하위 모듈에 의존해서는 안됩니다.
- 상위 모듈과 하위 모듈 모두 추상화에 의존해야 합니다.
- 추상화가 세부 사항에 의존하면 안됩니다.
- 세부사항이 추상화에 의존해야 합니다.
'DEV > 개발 방법론' 카테고리의 다른 글
마이크로 서비스와 모놀리틱 아키텍처 (1) | 2023.11.29 |
---|---|
디자인 패턴과 MVC 패턴 (0) | 2023.11.15 |
[개발] TDD(테스트 주도 개발)에 대한 이해 (0) | 2023.10.30 |