CS/그 외

SOLID 개발원칙

지잉지잉 2021. 8. 19. 20:54

SOLID 란?

객체지향 프로그래밍에서 지향하는 개발 원칙 5가지.

 

  1. Single Responsibility Principle (SRP, 단일 책임 원칙)
  2. Open/Closed Principle (OCP, 개방/폐쇄 원칙)
  3. Liskov Substitution Principle (LSP, 리스코프 치환 원칙)
  4. Interface Segregation Principle (ISP, 인터페이스 분리 원칙)
  5. Dependency Inversion Principle (DIP, 의존관계 역전 원칙)

 

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

  • 소프트웨어의 설계 부품(클래스, 함수 등)은 단 하나의 책임만을 가져야 한다.
  • 책임이 많아지면 클래스 내부의 함수끼리 강한 결합을 발생할 가능성이 높아진다. 이는 유지보수에 비용이 증가하게 되므로 따라서 책임을 분리시킬 필요가 있다.

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

  • 기존의 코드를 변경하지 않고(Closed) 기능을 수정하거나 추가할 수 있도록(Open) 설계해야 한다.

 

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

  • 자식 클래스는 언제나 자신의 부모 클래스를 대체할 수 있다는 원칙이다.
  • 즉 부모 클래스가 들어갈 자리에 자식 클래스를 넣어도 계획대로 잘 작동해야 한다.

 

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

  • 한 클래스는 자신이 사용하지않는 인터페이스는 구현하지 말아야 한다.
  • 하나의 일반적인 인터페이스보다 여러개의 구체적인 인터페이스가 낫다.

 

5. Dependency Inversion Principle (DIP, 의존관계 역전 원칙)

  • 의존 관계를 맺을 때 변화하기 쉬운 것 또는 자주 변화하는 것보다는 변화하기 어려운 것, 거의 변화가 없는 것에 의존하라는 것이다.
  • 한마디로 구체적인 클래스보다 인터페이스나 추상 클래스와 관계를 맺으라는 것이다.