Логотип ConstructiCat
CodeBust.
Навигация по разделу ▾

Неуместная близость.

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

##Признаки и симптомы

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

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
  }
}

##Причины проблемы

Смотрите внимательно за классами, которые проводят слишком много времени вместе. Хорошие классы должны знать друг о друге как можно меньше. Такие классы легче поддерживать и повторно использовать.

##Лечение

##Результат

  • Улучшает организацию кода.

  • Упрощает техническую поддержку и повторное использование кода.