본문 바로가기
Dev/Clean Code

[클린 소프트웨어] PART 2 - CHAPTER 8 - 단일 책임 원칙(SRP)

by 돈코츠라멘 2022. 1. 21.
한 클래스는 단 한 가지의 변경 이유만을 가져야 한다.


SRP; Single-Responsibility Priciple

여기서 '책임(Responsibility)'이란 '변경을 위한 이유'로 정의된다. 만약 한 클래스를 변경하기 위한 한 가지 이상의 이유를 생각할 수 있다면, 그 클래스는 한 가지 이상의 책임을 맡고 있는 것이다. 

 

만약 한 클래스가 하나 이상의 책임을 맡는다면, 그 책임들은 결합(= cohesion이 생김)된다. 한 책임에 대한 변경은 다른 책임을 충족시키는 클래스의 능력을 떨어뜨리거나 저하시킬 수 있다. 이러한 종류의 결합은 변경을 했을 때 예상치 못한 방식으로 잘못 동작하는 취약한 설계를 유발한다. 

 

한편, 애플리케이션이 서로 다른 시간에 두 가지 책임의 변경을 유발하는 방식으로 바뀌지 않는다면, 이들을 분리할 필요는 없다. 이런 경우 이들을 분리하면, 오히려 불필요한 복잡성이라는 악취를 풍기게 할 것이다. 변경의 축은 변경이 실제로 일어날 때나 변경의 축이다. 아무 증상도 없는데 이 문제에 SRP나 다른 원칙을 적용하는 것은 현명하지 못하다. 

 


Reference

  • Robert C. Martin - <Clean Software(Agile Software Development)>

책에 나오는 예제 코드는 제외
그냥 내가 기억하고 싶은 내용 위주로 정리

댓글