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을 기반으로 제공되며, 실무 적용 시 언어/프레임워크에 맞게 적응해야 합니다.