처음부터 차근차근

[OOP] 객체 지향 설계 원칙 본문

Architecture pattern/Design Pattern

[OOP] 객체 지향 설계 원칙

HangJu_95 2024. 1. 3. 14:18
728x90

코드를 작성할 때 일정한 제약이나 규율이 없이 무한한 자유를 준다면, 의외로 더 작성하기 힘든 때가 존재합니다.

어떻게 하면 보다 효율적이고 효과적으로 작성하기 위해 원칙이나 제약을 고민하거나 작성하는 시간이 더 투자되고, 이로 인하여 Resource가 소모되곤 합니다.

우리는 대부분 백엔드 개발을 한다고 하면 객체 지향으로 프로그래밍 합니다. 하지만 이것이 어떤 원칙에 입각되야 하는지 잘 알아야 조금 더 효율적이고 효과적인 코드를 작성할 수 있습니다.

 

이번 시간에는 객체 지향 설계의 5원칙을 알아보겠습니다.

S.O.L.I.D 객체 지향 설계 5원칙

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

  • SRP(Single Responsibility Principle) : 단일 책임 원칙
  • OCP(Open Close Principle) : 개방폐쇄의 원칙
  • LSP(the Liskov Substitution Principle) : 리스코프 치환의 원칙
  • ISP(Interface Segregation Principle) : 인터페이스 분리의 원칙
  • DIP(Dependency Inversion Principle) : 의존성역전의 원칙

SOLID 설계 원칙은 OOP의 단골 면접 질문 중 하나이며, 앞으로 사용하는 여러 디자인 패턴의 기본 원칙 중 하나입니다.

 

본래 좋은 소프트웨어란 변화에 대응을 잘 하는 것을 말한다.

 

예를 들어 갑자기 고객사에 기획에 없는 추가적인 요청을 하면 비록 욕 한사바리는 할지라도 결국 구현을 해야하는데, 이러한 변화에 큰 애로사항없이 잘 대응하기 위해선 소프트웨어 설계 근간이 좋아햐 한다.

 

좋은 설계란 시스템에 새로운 요구사항이나 변경사항이 있을 때, 영향을 받는 범위가 적은 구조를 말한다. 그래서 시스템에 예상하지 못한 변경사항이 발생하더라도, 유연하게 대처하고 이후에 확장성이 있는 시스템 구조를 만들 수 있다.

즉, SOLID 객체 지향 원칙을 적용하면 코드를 확장하고 유지 보수 관리하기가 더 쉬워지며, 불필요한 복잡성을 제거해 리팩토링에 소요되는 시간을 줄임으로써 프로젝트 개발의 생산성을 높일 수 있다.

출처: https://inpa.tistory.com/entry/OOP-💠-객체-지향-설계의-5가지-원칙-SOLID 

이 원칙들을 다 지켜야 하나요??

이 부분에 대해서 "OOP를 사용하면 무조건 다 적용해야 하나?" 라고 생각하게 됩니다.

그러나 팀의 방향성, 작업 시간, 코드의 구성 등 다양하게 고려하여야 하며 일부만 적용해도 문제되지 않습니다.

각각의 원칙은 특정 문제를 해결하기 위한 지침일 뿐이며, 만약 코드에 문제가 없다면 원칙을 적용할 이유가 없습니다.

서로 연관되어 있는 개념

5가지 원칙은 서로 연결되어 있는 개념입니다. 원칙끼리 서로서로 이용하기도 하고 포함되기도 합니다.

참조

 

💠 객체 지향 설계의 5가지 원칙 - S.O.L.I.D

객체 지향 설계의 5원칙 S.O.L.I.D 모든 코드에서 LSP를 지키기에는 어려움. 리스코프 치환 원칙에 따르면 자식 클래스의 인스턴스가 부모 클래스의 인스턴스를 대신하더라도 의도에 맞게 작동되어

inpa.tistory.com

 

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

현재를 살아가는 우리들은 모두 일정한 원리/원칙 아래에서 생활하고 있습니다. 여기서의 원칙 이라 함은 좁은 의미로는 개개인의 사고방식이나 신념, 가치관 정도가 될 수가 있겠고, 넓게는 한

www.nextree.co.kr