Неуместная близость.
Один класс использует служебные поля и методы другого класса.
##Признаки и симптомы
Один класс использует служебные поля и методы другого класса.

class Customer {
List<Order> orders = new ArrayList<>();
void cancelOrders() {
for (Order order : orders) order.status = "CANCELLED"; // напрямую меняет поле Order
}
}
class Order {
String status = "NEW";
Customer customer;
void assignTo(Customer customer) {
this.customer = customer;
customer.orders.add(this); // правит внутренний список Customer
}
}##Причины проблемы
Смотрите внимательно за классами, которые проводят слишком много времени вместе. Хорошие классы должны знать друг о друге как можно меньше. Такие классы легче поддерживать и повторно использовать.
##Лечение
##Результат
-
Улучшает организацию кода.
-
Упрощает техническую поддержку и повторное использование кода.