객체지향 설계 원칙(SOLID) ① – SRP

SRP

SRP(Single Responsibility Principle)는 “모듈은 단 한 명의 행위자에게만 책임을 져야 한다”는 컴퓨터 프로그래밍의 원칙입니다. 행위자라는 용어는 모듈에 대한 변경이 필요한 그룹(한 명 이상의 이해 관계자 또는 사용자로 구성됨)을 나타냅니다.
이 용어의 창시자인 로버트 C. 마틴(Robert C. Martin)은 원칙을 이렇게 설명합니다. ‘이성’이라는 단어를 둘러싼 혼란 때문에 ‘원칙은 사람에 관한 것’이라고도 해명했다. 그의 강의 중 일부에서 그는 또한 모든 것이 역할이나 배우에 관한 것이라고 주장합니다. 예를 들어, 같은 사람일지라도 회계사의 역할은 데이터베이스 관리자의 역할과 다릅니다. 따라서 각 모듈은 각 역할을 담당해야 합니다.
하나의 관심사에 클래스를 집중시키는 것이 중요한 이유는 클래스를 더 견고하게 만들기 때문입니다.

SRP(Single Responsibility Principle)는 “모듈은 하나의 행위자에게만 책임을 진다”는 컴퓨터 프로그래밍 원칙으로, 여기서 행위자는 모듈의 변경을 요청하는 사용자 또는 관리자 그룹을 의미합니다. (액터는 사용자, 하드웨어, 외부 시스템 등 시스템 실행에 역할을 하는 요소입니다.) 이 용어를 만든 로버트 마틴은 클래스는 한 가지 이유로만 변경되어야 한다는 원칙을 설명했습니다.

여기에 이유가 무엇입니까? 원칙은 사람, 역할 및 행위자에 관한 것입니다. 예를 들어, 데이터베이스의 역할이 다른 경우 같은 사람을 다른 행위자로 간주해야 하며 각 모듈은 각 역할만 담당해야 합니다.

당신의 가르침을 하나의 관심사에 집중해야 하는 이유는 그것이 그것을 더 견고하게 만들기 때문입니다.

클래스에 하나 이상의 책임이 있으면 안 되는 이유는 무엇입니까?

SRP를 100% 완벽하게 유지하는 것은 현실적으로 어렵습니다. 그러나 SRP 원칙을 염두에 두고 개발하는 이유는 기능 변경이 발생할 때 파급 효과를 줄이거나 제한하기 위해서입니다.

개발자가 선택해야 합니다.

  • 각 기능에 대한 클래스의 책임을 나누는 것은 상당히 사소해 보입니다. 그러나 실제로 이를 명확하게 구분하는 것은 개발자의 몫입니다. 보다 정확한 결정을 내리려면 SRP를 사용한 도메인 지식과 경험이 있어야 합니다.
  • 단일 책임 클래스 내에서도 분리 가능한 변수와 메서드를 함께 사용하지 않도록 주의해야 합니다.
  • 클래스는 단 하나의 책임만 있습니다. 따라서 책임을 명확하게 나타내는 방식으로 클래스 이름을 지정하는 것이 중요합니다.
  • 책임을 분리하면 클래스 간의 결합이 줄어듭니다. 반대로 책임이 같은 클래스를 여러 클래스로 나누면 응집력도 떨어집니다. 결합도가 낮고 응집도가 높은 것이 좋습니다. 즉, 각 클래스가 독립성을 갖습니다.

참조

  • 위키백과 SRP(지름길)
  • SRP를 완벽하게 이해(지름길)
  • 애착과 응집력이란 무엇입니까? (지름길)
  • 객체 지향 개발의 다섯 가지 원칙: SOLID(지름길)