Python

[Python] SOLID_단일 책임 원칙(SRP)

UnoCoding 2023. 2. 6. 23:58

SOLID  이란

 

클린 코딩 디자인중 하나인 SOLID 원칙에 대해서 천천히 알아보자.

 

  • S: 단일 책임 원칙  👈 현위치
  • O: 개방/폐쇄의 원칙
  • L: 리스코프 치환 원칙
  • I: 인터페이스 분리 법칙
  • D: 의존성 역전 원칙

 단일 책임 원칙

 

단일 책임 원칙(Single Responsibiliy Principle - SRP)는 클래스가 단 하나의 챔임을 져야 한다는 원칙이다.

클래스는 유일한 책임이 있다는 것은 하나의 구체적인 일을 담당한다는 의미 이다.

 

안티 페턴을 통한 이해

 

예제 내용 : 로그 파일이나 데이터베이스와 같은 소스에서 이벤트 정보를 읽어 로그 별로 필요한 액션(기능)을 분류하는 APP을 만들어 보자

 

프로세스 구조

class SystemMonitor:
    def load_activity(self):
        """소스에서 처리할 이벤트를 가져온다."""
        pass

    def identity_events(self):
        """가져온 데이터를 파싱하여 도메인 객체 이벤트로 전환"""
        pass

    def stream_event(self):
        """파싱한 이벤트를 외부로 전송"""
        pass

현제 위 class에서는 하나의 클래스가 3개의 책임을 가지고 있다. 해당 코드를 다른 클래스로 분리하여 각 클래스마다 책임을 지도록 바꾸어 보자

 

안티 페턴 개선하기

 

먼저 프로세스 부터 살펴보자.

 

각각의 객체들은 특정한 기능을 캡슐화하여 나머지 객체들에 영향을 미치지 않는다. 무엇 보다 명확하고 구체적인 의미를 갖는다.

 

해당 로직은 구현하지 않겠다 개념 자체가 어렵지 않기 때문이다. 개념만 알고 넘어가자!