And Brain said,
SOLID, 5가지 객체지향의 원칙 본문
오늘은 객체지향 프로그래밍과 설계에 중요한 5대 원칙 SOLID에 대해서 알아보자.
먼저, SOLID는 SPR(단일 책임 원칙), OCP(개방-폐쇄 원칙), LSP(리스코프 치환 원칙), ISP(인터페이스 분리 원칙), DIP(의존성 역전 원칙)의 첫글자를 각각 따온 것이다.
SRP(단일 책임 원칙), 클래스는 단 한 가지의 책임만을 가진다.
클래스는 단 한 가지의 책임만을 가진다.
즉, 클래스는 하나의 기능만을 수행해야 하며, 이 기능이 변경될 때만 클래스를 수정해야 한다.
SRP의 목표는 코드의 유지 보수성을 높이고, 모듈 간의 결합도를 낮추는 것이다.
클래스가 단일 책임을 가질 때, 변경에 따른 영향이 최소화되어 수정이 용이해진다.
또한, 다른 클래스와의 의존성이 낮아져 코드의 재사용성이 높아진다.
OCP(개방-폐쇄 원칙), 확장에는 열리고 변경에는 닫허라.
확장에는 열리고 변경에는 닫혀라.
소프트웨어 구성 요소(클래스, 모듈, 함수 등)가 확장에는 열려 있지만, 변경에는 닫혀 있어야 한다는 원칙으로, 새로운 기능이 추가되거나 기존 기능이 변경될 때, 기존 코드는 수정되지 않고 확장된 기능을 지원할 수 있어야 한다.
이를 위해 다형성, 추상화, 인터페이스와 같은 기술을 사용하여 변경에 유연하게 대응할 수 있도록 한다.
LSP(리스코프 치환 원칙), 하위 클래스는 상위 클래스를 대체할 수 있어야 한다.
하위 클래스는 상위 클래스를 대체할 수 있어야 한다.
이 원칙은 하위 클래스가 상위 클래스와 동일한 특성으로 취급되면서도, 하위 클래스의 인스턴스가 상위 클래스의 인스턴스를 완전히 대체할 수 있도록 구현해야 함을 의미한다.
이를 통해 코드의 재사용성과 확장성이 높아진다.
LSP를 준수하려면 메소드 시그니처 일치, 계약 준수, 오버라이드 시 엄격한 요구 사항 피하기 등을 고려해야 한다.
ISP(인터페이스 분리 원칙), 클라이언트는 자신이 사용하지 않는 인터페이스에 의존되면 안 된다.
클라이언트는 자신이 사용하지 않는 인터페이스에 의존되면 안 된다.
인터페이스를 작고 구체적으로 분리하여 클라이언트는 필요한 메소드만 포함한 인터페이스를 구현하며, 자신이 사용하지 않는 메소드에 대한 의존성을 줄인다.
이를 통해 클라이언트와의 결합도가 낮아져 변화에 더 유연하게 대응할 수 있으며 코드의 가독성이 향상된다.
DIP(의존성 역전 원칙): 고수준 모듈은 저수준 모듈에 의존해서는 안 된다.
고수준 모듈은 저수준 모듈에 의존해서는 안 된다.
소프트웨어 구성 요소는 추상화에 의존해야 하며, 구체화에는 의존해서는 안 된다.
즉, 구체적인 구현이 아닌 인터페이스나 추상 클래스를 통해 저수준 모듈과의 의존성을 관리함으로써, 코드의 유연성과 확장성을 높이는 것을 목표로 한다.
이로인해, 고수준 모듈과 저수준 모듈이 서로 독립적으로 변경되고 발전할 수 있으며, 테스트와 재사용이 쉬워진다.
SOLID 원칙은 객체지향 프로그래밍과 설계의 기본적인 원칙으로, 코드의 유지 보수성, 재사용성, 확장성 등을 향상시키기 위한 지침을 제공한다. 이 원칙들을 적용함으로써 프로젝트의 생명 주기 동안 효과적인 코드 관리와 품질 개선을 이룰 수 있다.
Thanks for watching, Have a nice day.
'IT > Language & BackEnd' 카테고리의 다른 글
JavaScript, 시작은 미약하였으나 그 끝은 창대하리라 (0) | 2023.04.15 |
---|---|
Generic, 프로그래밍 언어의 대명사(Pronouns) (0) | 2023.04.06 |