Logotipo do ConstructiCat
CodeBust.
Explorar a seção ▾

Intimidade Inapropriada.

Uma classe usa os campos e métodos internos de outra classe.

##Sinais e sintomas

Uma classe usa os campos e métodos internos de outra classe.

class Customer {
  List<Order> orders = new ArrayList<>();
  void cancelOrders() {
    for (Order order : orders) order.status = "CANCELLED"; // altera diretamente um campo de Order
  }
}
class Order {
  String status = "NEW";
  Customer customer;
  void assignTo(Customer customer) {
    this.customer = customer;
    customer.orders.add(this); // modifica a lista interna de Customer
  }
}

##Causas do problema

Fique de olho em classes que passam tempo demais juntas. Boas classes devem saber o mínimo possível umas sobre as outras. Tais classes são mais fáceis de manter e reutilizar.

##Tratamento

##Benefícios

  • Melhora a organização do código.

  • Simplifica o suporte e a reutilização de código.