SOLID와 객체지향 개발 5대원리

shinetiger·2022년 11월 30일
0

이론정리

목록 보기
10/13

객체지향 개발 5대원리 : SOLID

유지보수하기 쉽고, 확장이 쉬운 소프트웨어를 만드는 원리.

SRP : 단일책임 원칙(Single Responsibility Principle)

하나의 객체 = 하나의 책임. 캡슐화의 중요성.
메소드의 갯수 ≠ 책임의 갯수

클래스를 변경하는 이유는 단 한가지여야 한다

장점

  • 유지보수가 편하다 (쉬운 테스트, 낮은 결합, 쉬운 검색, 쉬운 구현)
  • 사이드 이펙트를 막을 수 있다
💡 버그가 발생하더라도 다른 관련없는 동작에 영향을 미치지 않도록 동작을 분리하는것이 목표. 그러나 과도한 고려는 나은 설계대신 이해하기 힘든 설계로 이어진다.

OCP : 개방폐쇄 원칙(Open Closed Principle)

소프트웨어의 구성요소는 확장에는 열려있고, 변경에는 닫혀 있어야 한다
요구사항의 변경이나 추가사항이 발생했을 때, 기존 구성요소는 수정이 일어나지 말고, 쉽게 확장해서 재사용할 수 있어야 한다.

💡 세세하게 클래스들을 나누지 말고 **상위 클래스 또는 인터페이스**를 중간에 두면 수정사항이 있을때 **그것들만** 수정하면 되니까 효율적이다.

LSP : 리스코프 치환 원칙(Liskov Substitution Principle)

자식 클래스는 부모 클래스에서 가능한 행위를 수행해야 하며, 객제 지향 프로그래밍에서는 부모 클래스의 인스턴스 대신 자식 클래스의 인스턴스를 사용해도 문제가 없다

💡 조직도, 계층도를 염두해두지 말고 **분류도**로 생각해서 자식과 부모 객체를 만들어야 한다.

ISP : 인터페이스 분리 원칙(Interface Segregation Principle)

한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다는 원칙

💡 - 단일 책임 원칙(SRP)과 인터페이스 분할 원칙(ISP)은 같은 문제에 대한 두가지 해결책이다. - 상위 클래스는 풍성할수록 좋고, 인터페이스는 작을 수록 좋다(적은게 아니라)

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

의존관계를 맺을 때, 변화하기 쉬운 것보다는 변화하기 어려운 것에 의존해야 한다

profile
의문을 질문으로 바꾸는 개발자

0개의 댓글