C++/개념정리

C++[SOLID 원칙]

jeongchanhyo 2025. 1. 3. 03:09

SOLID원칙이란?

객체 지향 프로그래밍에서 소프트웨어 설계를 개선하기 위한 다섯 가지 기본 원칙을 나타낸다.

이 원칙들은 우리들의 선배님의 경험들이 녹아내려져있는 행동방침으로 코드의 유지보수성, 확장성, 재사용성을 높이는 데 도움을 준다.

아무래도 이건 응집도와 결합도에서 배운 내용과 유사한 부분이 있다.

1. S - 단일 책임 원칙(SRP, Single Responsibility Principle)

  • 클래스는 하나의 책임만 가져야 하며, 그 책임을 완수하는 데 필요한 모든 기능을 포함해야 된다.

2. O - 개방-폐쇄 원칙 (OCP, Open/Closed Principle)

  • 클래스, 모듈 등은 확장에는 열려있고 수정에는 닫혀있어야된다.
  • 기존 코드를 수정하지 않고도 새로운 기능을 추가할 수 있도록 인터페이스나 추상클래스를 사용한다.

3. L - 리스코프 치환 원칙 (LSP, Liskov Substitution Principle)

  • 서브타입은 언제나 자신의 슈퍼타입으로 교체할 수 있어야 하며, 프로그램의 정확성을 유지해야된다.
  • 자식 클래스가 부모 클래스의 행동을 변경하지 않도록 설계해야됨.

4. I - 인터페이스 분리 원칙 (ISP, Interface Segregation Principle)

  • 클라이언트는 자신이 사용하지 않는 인터페이스에 의존하지 않아야 한다. 즉, 여러 개의 특정 인터페이스로 분리해야한다.
  • 하나의 거대한 인터페이스 대신, 여러 개의 작은 인터페이스를 만들어 각 클라이언트가 필요한 메서드만 구현.

5. D - 의존성 역전 원칙 (DIP, Dependency Inversion Principle)

  • 고수준 모듈은 저수준 모듈에 의존해서는 안되며, 둘 다 추상화에 의존해야된다. 
  • 구체적인 클래스 대신 인터페이스나 추상 클래스를 사용하여 의존성을 줄인다.

SOLID 원칙의 중요성

  • 유지보수성 향상: 코드의 각 부분이 명확한 책임을 가지므로, 변경이 용이.
  • 재사용성 증가: 잘 설계된 모듈은 다른 프로젝트에서도 쉽게 재사용할 가능.
  • 테스트 용이: 각 모듈이 독립적으로 동작하므로, 단위 테스트가 용이.
  • 확장성: 새로운 기능 추가 시 기존 코드를 수정하지 않고도 확장이 가능.

'C++ > 개념정리' 카테고리의 다른 글

C++[코드변경 깃허브 적용]  (0) 2025.01.13
C++[디자인 패턴]  (1) 2025.01.06
C++[응집도, 결합도]  (0) 2025.01.03
C++[sort알고리즘]  (0) 2025.01.02
C++[Vector]  (0) 2025.01.01