본문 바로가기
IT지식/Web, Server

[Web] SOLID 개발 원칙에 대해 공부해보자

by five-sun 2022. 12. 24.
728x90

정보처리기사를 공부하면서 SOLID원칙을 공부해었는데 이를 좀 더 자세히 알아보자.

 

SOLID 원칙이란?

객체 지향 설계의 5대 원칙이라 불리는 SOLID 원칙은 SRP(단일 책임 원칙), OCP(개방-폐쇄 원칙), LSP(리스코프 치환 원칙), ISP(인터페이스 분리 원칙), DIP(의존 역전 원칙)을 말한다.

 

단일 책임 원칙(Single Responsibility Principle)이란? 어떤 클래스를 변경해야하는 이유는 오직 하나.

모든 클래스는 각각 하나의 책임만을 가져야 한다는 원칙이다. 즉 그 클래스는 그 책을 완전히 캡슐화해야 함을 말한다. 사칙연산 함수를 가지고 있는 계산 클래스가 있다고 하면 이 상태의 계산 클래스는 오직 사칙연산 기능만을 책임진다.

이 원칙을 만족하면 불필요한 상속 및 구현을 줄여 가독성이 좋아지고 유지보수가 쉬워지며, 재사용성이 높아집니다.

 

 

개방-폐쇄 원칙(Open Closed Principle)이란? 기존의 코드를 변경하지 않고 기능을 수정하거나 추가할 수 있도록 설계.

확장에는 열려있고 수정에는 닫혀있는 기존의 코드를 변경하지 않으면서, 기능을 추가할 수 있도록 설계해야 한다는 원칙이다. 예를 들어, 캐릭터를 하나 생성했을 때, 각각의 캐릭터가 움직임이 다른 경우, 움직임의 패턴 구현을 하위 클래스에 맡긴다면 캐릭터 클래스의 수정은 필요가 없고 움직임의 패턴만을 재정의 하면 된다.

이를 만족하지 않으면 새로운 기능을 추가하는 것이 어려워지는 변경의 유연함과 관련된 문제가 발생할 수 있다.

 

 

리스코프 치환 원칙(Liskov Substitution Priciple)이란? 프로그램의 객체는 프로그램의 정확도를 깨트리지 않으면서 하위타입의 인스턴스로 바꿀 수 있어야 한다.

자식 클래스는 언제나 자신의 부모 클래스를 대체할 수 있다는 원칙이다.

이말은 부모 클래스가 들어갈 자리에 자식 클래스를 넣어도 잘 작동해야 한다는 의미이다. 자식 클래스는 부모 클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행하도록 해야 LSP를 만족한다.

 

 

인터페이스 분리 원칙(Interface Segregation Priciple)이란? 클라이언트는 자신이 사용하지 않는 메소드에 의존 관계를 맺으면 안된다.

한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다는 원칙이다. 하나의 일반적인 인터페이스보다 여러 개의 구체적인 인터페이스가 낫다.

단일 책임 원칙과 관되어 있는데 ISP와 SRP는 객체가 커지지 않도록 막는 원칙이다. 이를 통해 변경시 영향을 최소화할 수 있다.

 

 

의존 역전 원칙(Dependency Inversion Priciple)이란? 고수준모듈은 저수준모듈에 의존해서는 안되고 저수준모듈은 고수준모듈에서 정의한 추상타입에 의존한다.

의존 관계를 맺을 때 변화하기 쉬운 것 혹은 자주 변화하는 것보단 변화하기 어려운 것, 거의 변화가 없는 것에 의존하라는 원칙이다. 한마디로 구체적인 클래스보다 인터페이스나 추상클래스와 관계를 맺으라는 것이다.

 

728x90