Feature Envy occurs when a method is overly reliant on another class.
This is an indication that the feature of the other class could be defined in a better location, such as in the envious method’s class, a super class of both classes, or another unrelated class.
Feature Envy is a method overly reliant on a class, for a class overly reliant on another class, check out Inappropriate Intimacy.
Books about code smells
Learn to write better smelling code.
Refactoring: Improving the Design of Existing Code
Code smells: A Predictor of Remarkable Quality Improvement
Clean Code: A Handbook of Agile Software Craftsmanship