shotgun surgery와 divergent change는 Refactoring에 나오는 code smell 중 하나이다. 언뜻 비슷해 보이지만 완전히 반대 되는 개념이다.
이 두가지의 code smell은 SRP를 위반할 때 발생하는 대표적인 증상이다.
SRP (Single Responsibility Principle)
- 단일 책임 원칙 : 클래스는 하나의 책임을 가진다.
- 동일한 이유에 대한 변경되는 부분은 같이 있어야 하고, 다른 이유로 변경되는 부분은 떨어져 있어야 한다. 즉 클래스가 변경될 이유는 하나여야 한다.
Shotgun surgery
- 하나의 클래스의 변경이 다른 많은 클래스의 변경을 일으킨다.
- 동일한 이유 때문에 변경되는 부분이 여러 클래스에 분산되어 있을 때 발생
Divergent Change
- 하나의 클래스가 여러 종류의 변화를 겪는다.
- 다른 이유로 변경되는 부분이 하나의 클래스에 모여 있을 때 발생
Summary
Shotgun surgery는 모아둬야 할 것들을 떨어뜨려 놔서 발생하는 문제이고, Divergent change는 떨어뜨려 놔야 할 것을 모아둬서 발생하는 문제이다.
'SW Engineering' 카테고리의 다른 글
Refactoring - Encapsulation (0) | 2019.12.07 |
---|---|
Refactoring 예제 (0) | 2019.12.07 |