한 클래스는 단 한 가지의 변경 이유만을 가져야 한다.
SRP; Single-Responsibility Priciple
여기서 '책임(Responsibility)'이란 '변경을 위한 이유'로 정의된다. 만약 한 클래스를 변경하기 위한 한 가지 이상의 이유를 생각할 수 있다면, 그 클래스는 한 가지 이상의 책임을 맡고 있는 것이다.
만약 한 클래스가 하나 이상의 책임을 맡는다면, 그 책임들은 결합(= cohesion이 생김)된다. 한 책임에 대한 변경은 다른 책임을 충족시키는 클래스의 능력을 떨어뜨리거나 저하시킬 수 있다. 이러한 종류의 결합은 변경을 했을 때 예상치 못한 방식으로 잘못 동작하는 취약한 설계를 유발한다.
한편, 애플리케이션이 서로 다른 시간에 두 가지 책임의 변경을 유발하는 방식으로 바뀌지 않는다면, 이들을 분리할 필요는 없다. 이런 경우 이들을 분리하면, 오히려 불필요한 복잡성이라는 악취를 풍기게 할 것이다. 변경의 축은 변경이 실제로 일어날 때나 변경의 축이다. 아무 증상도 없는데 이 문제에 SRP나 다른 원칙을 적용하는 것은 현명하지 못하다.
Reference
- Robert C. Martin - <Clean Software(Agile Software Development)>
책에 나오는 예제 코드는 제외
그냥 내가 기억하고 싶은 내용 위주로 정리
'Dev > Clean Code' 카테고리의 다른 글
[클린 소프트웨어] PART 2 - CHAPTER 12 - 인터페이스 분리 원칙(ISP) (0) | 2022.02.15 |
---|---|
[클린 소프트웨어] PART 2 - CHAPTER 10 - 리스코프 치환 원칙(LSP) (0) | 2022.02.08 |
[클린 소프트웨어] PART 2 - CHAPTER 9 - 개방 폐쇄 원칙(OCP) (0) | 2022.02.07 |
[클린 소프트웨어] PART 2 - CHAPTER 7 - 애자일 설계란 무엇인가? (0) | 2022.01.18 |
[클린 소프트웨어] PART 1 - CHAPTER 5 - 리팩토링 (0) | 2022.01.14 |
댓글