현재 React를 공부하고 있는데,
각 컴포넌트를 설계할 때 사용하는 SOLID에 대해 공부해보고, 이를 적용해보고자 한다.
정의 : 프로그래머가 시간이 지나도 유지 보수와 확장이 쉬운 시스템을 만들고자 할 때 사용
1. S(SRP) 단일 책임 원칙
모든 클래스는 하나의 책임만 가지며, 클래스는 그 책임을 완전히 캡슐화 해야한다.
한 클래스를 한 관심사에 집중하도록 유지하는 것이 중요한 이유는 , 이것이 클래스를 더욱 튼튼하게 만들기 때문이다.
2. O(OCP) 개방-페쇠 원칙
소프트웨어 개체(클래스, 모듈, 함수 등등)는 확장에 대해 열려있어야 하고, 수정에 대해서는 닫혀있어야 한다
이 원칙이 잘 적용되면, 기능을 추가하거나 변경해야 할 때 원래 코드를 변경하지 않고 기존 코드에 새로운 코드를 추가함으로써 기느의 추가나 변경이 가능하다.
- 확장에 대해 열려있다
- 모듈의 확장할 수 있음을 의미, 모듈이 하는 일을 변경할 수 있다
- 수정에 대해 닫혀있다
- 모듈의 소스 코드나 바이너리 코드를 수정하지 않아도 모듈의 기능을 확장하거나 변경할 수 있다
3. L(LSP) 리스코프 치환 원칙
컴퓨터 프로그램에서 자료형 S가 자료형 T의 서브타입이라면 필요한 프로그램의 속성(정확성, 수행하는 업무 등)의 변경 없이 자료형 T의 객체를 자료형 S의 객체로 교체(치환)할 수 있어야 한다는 것
4. I(ISP) 인터페이스 분리 원칙
클라이언트가 자신이 이용하지 않는 메서드에 의존하지 않아야한다는 것
큰 덩어리의 인터페이스들을 구체적이고 작은 단위들로 분리시킴으로써 클라이언트들이 꼭 필요한 메서드들만 이용할 수 있게 한다.
이와 같은 작은 단위들을 "역할 인터페이스"라고도 부른다.
이를 통해 시스템 내부 의존성을 약화시켜 리팩토링, 수정, 재배포를 쉽게 할 수 있다.
5. D(DIP) 의존관계 역전 원칙
상위 계층(정책 결정)이 하위 계층(세부 사항)에 의존하는 관계를 반전(역전)시킴으로써 상위 계층이 하위 계층의 구현으로부터 독립되게 할 수 있다.
- 상위 모듈은 하위 모듈에 의존해서는 안된다.
- 상위 모듈과 하위 모듈 모두 추상화에 의존해야 한다
- 추상화는 세부 사항에 의존해서는 안된다
- 세부사항이 추상화에 의존해야한다.
- 상위와 하위 객체 모두가 동일한 추상화에 의존해야 한다.
참고문헌https://ko.wikipedia.org/wiki/SOLID_(%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%EC%84%A4%EA%B3%84)