IT

[IT] 객체지향 개발의 5원칙 (SOLID 원칙)

eulBlue 2023. 12. 19. 18:43

SOLID 는 객제치향 프로그래밍(OOP) 에서 디자인 원칙을 나타내는 다섯가지 원칙의 약자이다.

  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번과 2번일것이다. ( 내가 그렇다 .. )

학교에서 배울 때는 그냥 이런게 있구나 ~ 하고 넘어갔었는데 요즘은 이런게 또 회사면접볼때 물어보기도 하고

개발할 때 중요하게 생각해야 한다고 하더라. 근데 개발을 하면 할 수록 뼈저리게 느낀다.

내가 이렇게 뼈저리게 느끼는 동안 다른 연차높은 개발자분들도 아주 중요하다고 말씀해주신다.

이래야 나중에 확장할때도, 유지보수 할때도, 리팩토링 할때도 힘들지 않다.

제일 쉽게 비교하는 것은 예전코드와 비교해보는것인데, 정말 끔찍하다.

그래서 요즘에는 어떻게든 모듈화 시키고 함수화 시켜는 이유도 이때문이다.