SOLID Principles: Understanding SRP (Single Responsibility P
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

SOLID 원리 이해하기 | Part 01

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

아키텍처 패턴

대상자

소프트웨어 개발자, OOP 및 SOLID 원리 학습자 (중간 이상 난이도)

핵심 요약

  • SRP 정의: "한 클래스 또는 모듈은 변경의 원인이 하나뿐이어야 한다" (Clean Code, p.138)
  • SRP 위반 예시:

- Go 예제: SaveUser() 메서드가 User 구조체에 포함될 경우 데이터 저장 책임과 분리 위반

- Elixir 예제: create_user/1 함수가 사용자 생성, 이메일 전송, 로깅을 동시에 수행하는 경우

  • SRP 준수 원칙: 각 컴포넌트는 단일 목적만을 담당해야 하며, 책임이 분산되면 원칙 위반으로 간주

섹션별 세부 요약

1. SRP의 개념과 중요성

  • SOLID 원리의 SRP는 Robert Martin이 2000년에 제안한 객체지향 설계의 핵심 원칙
  • 1980년대 애플리케이션 복잡도 증가로 인해 OOP 채택 필요성 발생
  • SRP 준수 시 코드 품질 향상유지보수성 개선 가능

2. SRP 정의와 실무 적용

  • "Clean Code" 정의:

- 클래스/모듈은 단일 변경 이유만 존재해야 함

- 예: User 구조체는 사용자 데이터 처리만 담당, 저장은 다른 컴포넌트에 위임

3. SRP 위반 사례 분석 (Go)

  • Scenario 01:

- User 구조체에 SaveUser() 메서드 포함 시 데이터 저장 책임과 분리 위반

- IsAdult()ValidateDocument()는 사용자 관련 로직에 적합

4. SRP 위반 사례 분석 (Elixir)

  • Scenario 02:

- create_user/1 함수가 사용자 생성, 이메일 전송, 로깅을 동시에 수행

- 수정된 코드: UserCreator 모듈은 생성만, WelcomeNotifier 모듈은 이메일 전송만 담당

결론

  • SRP 준수 팁: 각 컴포넌트의 책임 범위를 명확히 정의하고, 단일 목적에 집중하세요. 예제 코드는 Elixir 및 Golang을 기반으로 제공되며, 실무 적용 시 언어/프레임워크에 맞게 적응해야 합니다.