25-03-04 SOLID 개발원칙

김용진·2025년 3월 4일
0

Coffe_Time

목록 보기
2/3

SOLID 원칙

S : 단일 책임 원칙(SRP_Single Responsibility Principle)
O : 개방 폐쇄 원칙(OCP_Open Closed Principle)
L : 리스코프 치환 원칙(LSP_Liskov Substitution Principle)
I : 인터페이스 분리 법칙(ISP_Interface Segregation Principle)
D : 의존 역전 원칙(Dependency Inversion Principle)

SOLID원칙이란 객체지향(OOP) 설계에서 지켜야 할 5개의 소프트웨어 개발원칙을 의미한다.

쉽게말하면 좋은 설계(클린 코드)를 통해 확장성이 용이하고 유지보수관리가 쉬우며, 복잡성을 제거해 프로젝트
개발의 생산성을 높이기 위해 만든 원칙

S : 단일 책임 원칙(SRP_Single Responsibility Principle)

단일 책임 원칙이란 클래스(객체)는 단 하나의 책임만 가져야 한다를 의미한다.
하나의 클래스에는 하나의 기능만 내포하라는 의미, 기능이 여러개일 경우 유지 보수 관리에 불리하다.
단, 하나의 기능이란 단어에 메달려 하나의 메서드만을 내포한다고 생각해서는 안된다. 하나의 책임이란
어떤 책임을 가지는 자가 그 책임을 맡기 위해 하는 여러 행위(메서드)를 포함하고있다.

EX) 경비원이 순찰, 단속, 안내를 맡을 수 있지만 화장실 청소를 하지는 않는다.

O : 개방 폐쇄 원칙(OCP_Open Closed Principle)

확장에 열려있으며, 수정에는 닫혀있어야 한다를 의미
기능 추가, 변경에 있어 추가에는 쉽게, 변경에는 최소화로 하라는 의미이다.
추상화를 통한 다형성확보와 확장성극대화를 추구한다.

추상화란? : 핵심적인 부분을 남기고 불필요한 부분을 제거하는 행위를 의미한다.

L : 리스코프 치환 원칙(LSP_Liskov Substitution Principle)

상속관계인 서브(자식)타입은 언제나 기반(부모)타입으로 교체될 수 있어야 한다는 의미
다향성 원리를 이용하기 위한 원칙이다
부모의 기능을 자식이 마음대로 바꿔선 안되며, 상속을 받더라도 부모클래스의 기능은 정상적이여야 한다는 의미
단, 상속 관계가 무조건 정답이 아니기에 확장 대신 합성 또한 고려해야 한다.

I : 인터페이스 분리 법칙(ISP_Interface Segregation Principle)

SOP와 비슷하지만 다른 원리, 인터페이스를 용도에 맞게 분리해야함을 의미
클라이언트의 목적과 용도에 맞게 적합한 인터페이스를 제공 할 수 있도록 해야한다.
단 한번 분리한 인터페이스는 차후 다시 분리하는 행위가 발생하지 않도록 해야한다.
즉 클래스에서 불필요한 메서드를 실행할 필요없도록 인터페이스를 분리하는 행위가 인터페이스 분리 법칙이다.

D : 의존 역전 원칙(Dependency Inversion Principle)

어떤 클래스를 참조해야하는 상황이 올 경우, 그 클래스의 상위 요소(추상 클래스 OR 인터페이스)를 참조하라는 의미
클래스 간의 의존성이 과도하게 연결 되어 있을 경우, 클래스의 코드를 바꿔야 할 때 전부 바꿔야 할 수 있기에 상위 클래스 혹은 인터페이스를 만들어 코드를 간결하고 수정하기 편하게 만드는것에 있어서 개방 폐쇄 원칙과 밀접한 관계가 있다.

profile
메모리폼

0개의 댓글