3.8 산탄총 수술
산탄총 수술은 뒤엉킨 변경과 비슷하면서도 정반대다.
산탄총 수술
이 냄새는 코드를 변경할 때마다 자잘하게 수정해야 하는 클래스가 많을 때 풍긴다.
뒤엉킨 변경
산탄총 수술
원인
맥락을 잘 구분하지 못함
해법(원리)
맥락을 명확히 구분
발생 과정
한 코드에 섞여 들어감
여러 코드에 흩뿌려짐
실제 행동
맥락별로 분리
맥락별로 모음
📍함수 옮기기, 필드 옮기기: 함께 변경되는 대상들을 한 모듈에 묶어두면 좋다.
📍여러 함수를 클래스로 묶기: 비슷한 데이터를 다루는 함수가 많은 경우 적용하기
📍여러 함수를 변환 함수로 묶기: 데이터 구조를 변환하거나 보강하는 함수들에 적용하기
📍단계 쪼개기: 묶은 함수들의 출력 결과를 묶어서 다음 단계의 로직으로 전달할 수 있는 경우에 적용하기
📍함수 인라인하기, 클래스 인라인하기: 어설프게 분리된 로직을 인라인 리팩터링으로 하나로 합치기
→ 메서드나 클래스가 비대해지지만, 나중에 추출하기 리팩터링으로 더 좋은 형태로 분리할 수도 있다.
Last updated