ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 20250327_(3) The SOLID Principles
    Study/C# 2025. 3. 28. 14:23


    SOLID 원칙  2000년대 초, 로버트 C. 마틴(Robert C. Martin, Uncle Bob)이 처음 정립했고, 이후 객체 지향 설계에서 사실상 표준처럼 여겨지고 있다.

    솔리드원칙이 객체지향에서의 핵심 개념으로 자리잡게된 이유는 코드의 유지보수성, 확장성, 안정성을 높이기 위해 만들어진 설계철학이며, 솔리드 원칙하에 프로그래밍 할 때 복잡한 시스템을 구성하더라도 변경에 강한 유연한 아키텍처를 설계할 수 있기 때문이다.


    < SOLID원칙의 핵심 개념 >

    S Single Responsibility Principle (단일 책임 원칙) 클래스는 하나의 책임만 가져야 한다.
    O Open/Closed Principle (개방-폐쇄 원칙) 확장에는 열려 있고, 변경에는 닫혀 있어야 한다.
    L Liskov Substitution Principle (리스코프 치환 원칙) 자식 클래스는 부모 클래스를 대체할 수 있어야 한다.
    I Interface Segregation Principle (인터페이스 분리 원칙) 클라이언트는 자신이 사용하지 않는 인터페이스에 의존하면 안 된다.
    D Dependency Inversion Principle (의존 역전 원칙) 추상화에 의존해야지, 구체화에 의존하면 안 된다.

    1. 단일 책임 원칙 (SRP)

    "클래스는 하나의 책임만 가져야 한다."

    즉, 하나의 변경 이유만 가져야 한다.

    목적

    • 변경이 일어나는 이유를 하나로 제한하여 유지보수성을 향상시키기 위함.

    2. 개방-폐쇄 원칙 (OCP)

    "소프트웨어 구성 요소는 확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다."

    목적

    • 기존 코드를 수정하지 않고 새로운 기능을 추가할 수 있도록 설계한다.

    3. 리스코프 치환 원칙 (LSP)

    "자식 클래스는 언제나 부모 클래스를 대체할 수 있어야 한다."

    즉, 상속받은 클래스가 부모 클래스의 행위를 해치지 않아야 한다.

    목적

    • 클래스 간의 상속 관계에서 예측 가능한 동작 보장.
    •  

    4. 인터페이스 분리 원칙 (ISP)

    "인터페이스는 클라이언트가 사용하지 않는 메서드에 의존하지 않도록 분리해야 한다."

    목적

    • 불필요한 의존성 제거 → 작은 인터페이스를 여러 개로 나누어 유지보수 용이

    5. 의존 역전 원칙 (DIP)

    "고수준 모듈은 저수준 모듈에 의존해서는 안 된다. 둘 다 추상화에 의존해야 한다."

    목적

    • 구체적인 구현보다 추상(인터페이스, 추상 클래스 등)에 의존하도록 하여, 유연한 구조를 만든다.

    SOLID 원칙은 단순한 규칙이 아니라, 유지보수성, 확장성, 안정성을 높이기 위한 핵심 설계 철학이다. 복잡한 시스템을 구성하더라도 SOLID 원칙을 따르면 변경에 강한 유연한 아키텍처를 설계할 수 있다.

     

    'Study > C#' 카테고리의 다른 글

    20250327_(7) Collection  (0) 2025.03.28
    20250327_(6) Boxing / Unboxing  (0) 2025.03.28
    20250327_(5) Coupling & Cohension  (0) 2025.03.28
    20250327_(4) Dependency Injection, DI  (0) 2025.03.27
    20250327_(2) Encapsulation  (0) 2025.03.27
Designed by Tistory.