SOLID 원칙 핵심 정리

객체 지향 프로그래밍의 SOLID 원칙 핵심에 대해서 정리한 글입니다. 이 글의 목적은 SOLID에 대해 상대방에게 설명하고 싶을 때 깔끔하게 핵심만 전달할 수 있도록 도와드리는 것입니다. 저의 주관적인 해석이 들어가 있을 수 있다는 점 참고 부탁 드립니다.

SOLID 원칙 핵심

5가지 원칙을 쉽게 기억할 수 있게 하기 위해 앞 글자 하나씩을 조합해서 SOLID 라는 문자열이 탄생했습니다. (누가 만들었나요? 👈click!!)

각 원칙이 만들어진 근본적인 이유는 객체 지향적이고 유지 보수하기 좋은 코드를 작성하도록 돕기 위한 것입니다.

묶어 생각하기 좋은 원칙들은 색깔을 맞춰 두었습니다.

SRP (Single Responsibility Principle)

단일 책임 원칙. 특정 기능을 변경할 경우 변경의 범위가 최소화 되도록 설계할 것을 권장하는 원칙입니다. 변경해야 할 위치를 찾기 쉬워야 하고 변경되었을 때 예상하지 못한 위치의 코드 변경이 동반되지 않도록 주의해야 합니다.

OCP (Open/Closed Principle)

개방/폐쇄 원칙. 확장에는 열려있고 변경에는 닫혀있어야 한다는 의미. 기능 확장 시 코드의 변경을 최소화할 수 있도록 설계할 것을 권장하는 원칙입니다. 기능 확장이 예상되는 코드를 작성한다면 나중에 기능을 확장할 때 수정 위치를 파악하기 쉽고 간단하게 확장할 수 있도록 만들어야 합니다.

LSP (Liskov Substitution Principle)

리스코프 치환 원칙. 자식 클래스가 부모 클래스의 메서드를 오버라이딩 하거나 구현할 때는 정해진 규약을 반드시 만족해야 한다는 원칙입니다. 예를 들면, ‘방귀를 배출한다’에 해당하는 추상 메서드를 ‘똥을 배출한다’ 라는 기능으로 구현하면 안 된다는 뜻입니다.

ISP (Interface Segregation Principle)

인터페이스 분리 원칙. 큰 역할을 나타내는 인터페이스 하나 보다는 작은 인터페이스 여러 개를 만들 것을 권장하는 원칙입니다. SRP를 따르려면 인터페이스가 하나의 책임을 가지게 하는 것이 자연스럽습니다.

DIP (Dependency Inversion Principle)

의존 관계 역전 원칙. 다형성을 적극 활용하여 구현체에 대한 의존성을 최소화 할 것을 권장하는 원칙입니다. OCP를 따르려면 DIP도 함께 고려되어야 합니다. OCPDIP를 따르기 위한 가장 대표적인 디자인 패턴으로 DI(Dependency Injection, 의존 관계 주입)가 있습니다.

다형성 예제로 쉽게 이해하기 👈click!!

스스로 경험하며 얻은 깨달음을 공유하기 좋아하며, 세상이 필요로 하는 코드를 작성하기 위해 노력하는 개발자입니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다