✏️3.8 산탄총 수술

산탄총 수술은 뒤엉킨 변경과 비슷하면서도 정반대다.

산탄총 수술

이 냄새는 코드를 변경할 때마다 자잘하게 수정해야 하는 클래스가 많을 때 풍긴다.

뒤엉킨 변경
산탄총 수술

원인

맥락을 잘 구분하지 못함

해법(원리)

맥락을 명확히 구분

발생 과정

한 코드에 섞여 들어감

여러 코드에 흩뿌려짐

실제 행동

맥락별로 분리

맥락별로 모음

📍함수 옮기기, 필드 옮기기: 함께 변경되는 대상들을 한 모듈에 묶어두면 좋다.

📍여러 함수를 클래스로 묶기: 비슷한 데이터를 다루는 함수가 많은 경우 적용하기

📍여러 함수를 변환 함수로 묶기: 데이터 구조를 변환하거나 보강하는 함수들에 적용하기

📍단계 쪼개기: 묶은 함수들의 출력 결과를 묶어서 다음 단계의 로직으로 전달할 수 있는 경우에 적용하기

📍함수 인라인하기, 클래스 인라인하기: 어설프게 분리된 로직을 인라인 리팩터링으로 하나로 합치기

→ 메서드나 클래스가 비대해지지만, 나중에 추출하기 리팩터링으로 더 좋은 형태로 분리할 수도 있다.

Last updated