A Lei de Demeter é uma diretriz de design para o desenvolvimento de software, particularmente na programação orientada a objetos. Ela visa reduzir as dependências entre objetos, tornando os sistemas mais modulares, mais fáceis de manter e menos propensos a bugs.

Compreender a Lei de Deméter

A Lei de Demeter, muitas vezes resumida como "apenas falar com seus amigos imediatos", incentiva os objetos a se comunicarem apenas com seus colaboradores diretos. Isto significa que um objeto deve apenas invocar métodos de:

  • Ele mesmo
  • Os objetos passaram como parâmetros
  • Objetos que cria
  • Seus objetos componentes diretos

Ao aderir a esta regra, as dependências do objeto são minimizadas, reduzindo o risco de acoplamento apertado e tornando o código mais fácil de mudar ou estender.

Aplicação da Lei de Demeter

A implementação da Lei de Demeter envolve o desenho de classes e métodos que não atingem profundamente os gráficos de objetos. Por exemplo, em vez de chamar:

order.getCustomer().getAddress().getCity()

É melhor fornecer um método que devolva as informações necessárias diretamente:

order.getCustomerCity()

Dicas de Refatorização

  • Encapsular cadeias complexas dentro da própria classe.
  • Crie métodos que exponham apenas os dados necessários.
  • Use padrões de design como Facade ou Mediator para reduzir dependências.
  • Mantenha as aulas focadas em uma única responsabilidade.

Benefícios de seguir a lei de Demeter

A adesão a esta lei oferece várias vantagens:

  • Reduz o acoplamento entre as classes.
  • Aumenta a legibilidade e a manutenção do código.
  • Torna o teste de unidade mais fácil isolando objetos.
  • Facilita a refatoração e extensão mais fáceis do código.

Em resumo, a implementação da Lei de Demeter em design orientado a objetos promove um código mais limpo e modular. Ela incentiva os desenvolvedores a pensar cuidadosamente sobre interações de objetos e dependências, levando a sistemas de software mais robustos.