Post

[CS] SOLID 원칙

[CS] SOLID 원칙

객체 지향 프로그래밍 설계의 다섯 가지 기본 원칙

Single responibility principle (단일 책임 원칙, SRP)

  • 하나의 클래스는 하나의 책임만 가져야 한다.
    • 동작을 담당하는 클래스는 동작 기능 만을 책임져야 한다.
    • 이 클래스를 수정한다면 동작 관련 문제 해결을 위해 수정해야만 한다.

Open/closed principle (개방-폐쇄 원칙, OCP)

  • 개체는 확장에 대해 열려 있어야 하고, 수정에 대해 닫혀 있어야 한다.
    • 개체를 상속 받는 개체는 동작(추상화)은 변경할 수 있다.
    • 하지만, 개체 자체를 수정할 수는 없다.
  • 기존 코드 수정 없이 기능을 추가할 수 있어야 한다.

Liskov substitution principle (리스코프 치환 원칙, LSP)

  • 상위 타입은 하위 타입으로 대체될 수 있어야 한다.
    • 서로 교체했을 때, 무리 없이 작동해야 한다.
    • 즉, 자료형을 만들 때 모든 경우를 고려해 만들어야 한다.

Interface segregation principle (인터페이스 분리 원칙, ISP)

  • 클라이언트가 자신이 용하지 않는 메소드에 의존하지 않아야 한다.
    • 하나의 큰 메소드가 아닌 여러 개의 작은 메소드로 분리하는 것이 좋다.
  • 메소드는 최소한의 기능만 제공하며 하나의 역할에만 집중해야 한다.

Dependency inversion principle (의존성 역전 원칙, DIP)

  • 추상화에 의존해야 하고, 구체화에 의존해선 안된다.
    • 상위 모듈은 하위 모듈에 의존해선 안된다. 두 모듈 전부 추상화에 의존해야 한다.
    • 추상화는 세부 사항에 의존해선 안된다. 세부 사항이 추상화에 의존해야 한다.
  • 의존 관계를 맺을 때, 추상화된 클래스는 구현체 클래스를 의존하면 안된다.
This post is licensed under CC BY 4.0 by the author.