기능 편애(Feature Envy)는 어떤 메소드가 자신이 속한 클래스가 아닌 다른 클래스의 메소드나 데이터를 자주 호출할 때 발생하는 코드 냄새(code smell)입니다. 즉, 메소드가 다른 클래스의 기능에 너무 의존적이어서, 해당 메소드가 다른 클래스에 더 적합하게 위치할 수 있는지를 고민해봐야 하는 경우입니다. 기능 편애는 두 개의 클래스 간에 너무 많은 상호작용이 일어나는 것으로 보통 인식됩니다. 이러한 경우 해당 클래스들은 결합도(coupling)가 높아져서 코드의 재사용성, 유지보수성, 확장성이 떨어지게 됩니다. 또한, 한 클래스가 다른 클래스의 많은 기능을 사용하게 되면, 코드 일관성이 떨어지고, 클래스의 책임을 명확하게 분리하지 못하게 됩니다. 기능 편애는 보통 다음과 같은 문제를 유발할..