SOLID 원칙 중에서 그 의미가 가장 잘 전달되지 못한 원칙은 바로 단일 책임 원칙
부적절한 이름 때문에 모든 모듈이 단 하나의 일만 해야 한다는 의미로 받아들이기 쉽다
단 하나의 일만 해야 한다는 원칙은 사실 따로 있고, 그것은 함수는 반드시 하나의 일만 해야한다는 원칙
SRP의 원칙은 다음과 같다
단일 모듈의 변경의 이유가 하나, 오직 하나뿐이어야 한다
소프트웨어 시스템은 사용자와 이해관계자를 만족시키기 위해 변경
SRP가 말하는 '변경의 이유'란 바로 이들 사용자와 이해관계자를 가리킨다
원칙은 아래와 같이 바꿔 말할 수도 있다
하나의 모듈은 하나의, 오직 하나의 사용자 또는 이해관계자에 대해서만 책임져야 한다
시스템이 동일한 방식으로 변경되기를 원하는 사용자나 이해관계자가 두 명 이상일 수도 있다
그래서 집단, 즉 해당 변경을 요청하는 한 명 이상의 사람들, 액터(actor)라고 부르고, 최종 버전은 아래와 같다
하나의 모듈은 하나의, 오직 하나의 액터에 대해서만 책임져야 한다
'모듈'이란 대부분의 경우 소스 파일을 의미하며, 일부 언어와 개발 환경에서는 단순히 함수의 데이터 구조로 구성된 응집된 집합
'응집된(cohesive)'이라는 단어가 SRP를 암시. 단일 액터를 책임지는 코드를 함께 묶어주는 힘이 바로 응집성(cohesion)
이 원칙을 이해하는 가장 좋은 방법은 이 원칙을 위반하는 징후들을 살펴보는 일