# 3.9 기능 편애

### 기능 편애

어떤 함수가 자기가 속한 모듈의 함수나 데이터보다 다른 모듈의 함수나 데이터와 상호작용 할 일이 더 많을 때 풍기는 냄새다.

🧷 실행 과정에서 외부 객체의 게터 메서드 대여섯 개를 호출하도록 작성된 함수

📍함수 옮기기: 함수가 데이터와 가까이 있고 싶어 하므로 데이터 근처로 옮긴다.

📍함추 추출하기: 함수의 일부에서만 기능을 편애하는 경우, 그 부분만 독립함수로 빼낸다. 어디로 옮길지 명확하게 드러나지 않은 경우에도 함수 추출하기로 함수를 여러 조각으로 나눈 후 적합한 모듈로 옮긴다.

> 2가지 방법은 디자인 패턴 중 전략 패턴과 방문자 패턴의 함께 변경할 대상을 한데 모으는 것을 거스른다. 데이터와 이를 활용하는 동작은 함께 변경해야 할 때가 많지만, 예외가 있다.
