본문 바로가기

SW Engineering

Shotgun surgery vs. Divergent Change

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