clean-architecture

7장. SRP : 단일 책임 원칙

SRP는 모든 모듈이 단 하나의 일만 해야 한다는 의미로 받아들이기 쉽다.

함수는 반드시 하나의, 단 하나의 일만 해야 한다는 원칙이다.

이 원칙은 커다란 함수를 작은 함수들로 리팩터링하는 더 저수준에서 사용된다.

이 원칙은 SOLID도, SRP도 아니다.

SRP는 역사적으로 아래와 같이 기술되어 왔다.

단일 모듈은 변경의 이유가 하나, 오직 하나뿐이어야 한다.

하나의 모듈은 하나의, 오직 하나의 사용자 또는 이해관계자에 대해서만 책임져야 한다.

→ 하나의 모듈은 하나의, 오직 하나의 액터에 대해서만 책임져야 한다.

모듈은 또 무슨 뜻인가?

‘응집된’ 이라는 단어는 SRP를 암시한다.

위 원칙을 이해하는 데에는 위반하는 징후들을 살펴보는 게 좋다.

  1. 우발적 중복
    1. 우발적 중복 같은 상황을 목격한 경험이 있을 것이다. 이러한 문제는 서로 다른 액터가 의존하는 코드를 너무 가까이 배치했기 때문이다. SRP는 서로 다른 액터가 의존하는 코드를 서로 분리하라고 말한다.
  2. 병합
    1. 각각 다른 사람이 같은 코드를 수정할 경우 변경사항은 서로 충돌하고, 결과적으로 병합이 발생한다.
    2. 이 문제를 벗어나는 방법은 서로 다른 액터를 뒷받침하는 코드를 서로 분리하는 것이다.

결론

단일 책임 원칙은 메서드와 클래스 수준의 우너칙이다.

컴포넌트 수준에서는 공통 폐쇄 원칙(Common Closure Principle)이 된다. 아키텍처 수준에서는 아키텍처 경계의 생성을 책임지는 변경의 축이 된다.