코샵
끄적끄적 코딩 공방
코샵

인기 글

  • 분류 전체보기 (475) N
    • MongoDB (4)
    • 일기장 (4)
    • Unity (138)
      • Tip (41)
      • Project (1)
      • Design Pattern (8)
      • Firebase (6)
      • Asset (2)
    • 파이썬 (127)
      • Basic (40)
      • OpenCV (8)
      • Pandas (15)
      • PyQT (3)
      • SBC(Single Board Computer) (1)
      • 크롤링 (14)
      • Fast API (29)
      • Package (6)
    • Linux (4)
    • C# (97)
      • Algorithm (11)
      • Window (7)
    • TypeScript (44) N
      • CSS (6) N
    • Git (11)
    • SQL (5)
    • Flutter (10)
      • Tip (1)
    • System (1)
    • BaekJoon (6)
    • Portfolio (2)
    • MacOS (1)
    • 유틸리티 (1)
    • 서비스 (6)
    • 자동화 (3)
    • Hobby (10)
      • 물생활 (10)
      • 식집사 (0)
전체 방문자
오늘
어제

최근 댓글

최근 글

반응형
hELLO · Designed By 정상우.
코샵

끄적끄적 코딩 공방

C#

객체지향의 5대 원칙 SOLID : Single Responsibility Principle

2023. 4. 27. 10:39
반응형
객체지향 프로그래밍에서 효율적이고 확장성 있는 코드를 작성하려면 SOLID 원칙을 지켜야 합니다. SOLID 원칙은 객체지향의 5대 원칙으로 Single Responsibility Principle, Open-Closed Principle, Liskov Substitution Principle, Interface Segregation Principle, Dependency Inversion Principle을 의미합니다. 이번 글에서는 SOLID 원칙 중 하나인 SRP(Single Responsibility Principle)에 대해 자세히 살펴보겠습니다.

SRP(Single Responsibility Principle)

SRP(Single Responsibility Principle)는 단일 책임 원칙으로, 클래스는 단 하나의 책임만 가져야 한다는 원칙입니다. 이것은 클래스가 변경되어야 하는 이유를 단 하나만 가져야 한다는 것을 의미합니다.

SRP의 예

다음은 SRP의 예시입니다.

// SRP를 지키지 않은 예시
public class User
{
    public string Name { get; set; }
    public string Email { get; set; }

    public void Register()
    {
        // 사용자 등록 로직
        // 이메일 발송 로직
    }
}

// SRP를 지킨 예시
public class User
{
    public string Name { get; set; }
    public string Email { get; set; }
}

public class UserManager
{
    public void Register(User user)
    {
        // 사용자 등록 로직
    }
}

public class EmailSender
{
    public void SendEmail(User user)
    {
        // 이메일 발송 로직
    }
}

위의 예제는 사용자 등록과 이메일 발송을 동시에 처리하는 User 클래스를 SRP를 지키지 않은 예시입니다. 이것은 User 클래스가 변경되어야 하는 이유를 두 가지 가지고 있기 때문에 SRP를 위배합니다.

반면, SRP를 지킨 예시는 User 클래스는 단순히 사용자 정보를 저장하는 역할만 수행하고, 사용자 등록과 이메일 발송은 각각 UserManager 클래스와 EmailSender 클래스에서 처리합니다. 이렇게 하면 클래스의 책임이 분리되어 변경사항이 생겨도 해당 클래스만 수정하면 되므로 유지보수성이 높아집니다.

SRP의 장점

SRP를 지키면 클래스의 책임이 분리되어 코드의 응집도가 높아지고 결합도가 낮아지기 때문에 코드의 가독성과 유지보수성이 증가합니다. 또한, 코드의 재사용성도 증가하며 단위 테스트 작성이 용이해집니다.

결론

SRP(Single Responsibility Principle)는 클래스가 단 하나의 책임만 가지도록 하는 객체지향의 5대 원칙 중 하나입니다. SRP를 지키면 클래스의 책임이 분리되어 코드의 응집도가 높아지고 결합도가 낮아지기 때문에 코드의 가독성과 유지보수성이 증가합니다. 이번 글을 통해 SRP에 대해 더욱 자세히 알아보았습니다.

저작자표시 비영리 변경금지 (새창열림)

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

객체지향의 5대 원칙 SOLID : Liskov Substitution Principle  (0) 2023.04.29
객체지향의 5대 원칙 SOLID : Open-Closed Principle  (0) 2023.04.28
C# : System.String  (0) 2023.04.26
C# : Refactoring  (0) 2023.04.20
C# 추상 클래스란?  (0) 2023.04.19
    'C#' 카테고리의 다른 글
    • 객체지향의 5대 원칙 SOLID : Liskov Substitution Principle
    • 객체지향의 5대 원칙 SOLID : Open-Closed Principle
    • C# : System.String
    • C# : Refactoring
    코샵
    코샵
    나의 코딩 일기장

    티스토리툴바