O paradigma da orientação a objetos (OO) existe a muitos anos e é utilizado em grande parte dos projetos em desenvolvimento hoje, porém até hoje encontramos dificuldades no desenvolvimento de sistemas OO. Isso se deve principalmente a falta de conhecimento sobre OO e tudo que engloba esse poderoso paradigma.
O que podemos concluir é que muitos profissionais não conhecem nada ou sabem pouco sobre OO. Mas será que a culpa é realmente deles? Na graduação onde deveríamos ver tudo sobre OO, acabamos vendo apenas os conceitos básicas como classe, atributos, herança, polimorfismo, encapsulamento e etc.. Mas isso é apenas a base para o desenvolvimento de um projeto orientado a objetos, existem ainda os princípios, leis, patterns e técnicas que merecem muito a nossa atenção.
O objetivo desse post é apresentar a “Law of Demeter”(Lei de Demeter), que foi criada em 1987 por Karl Lieberherr e Ian Holland, da Northeastem Univerity, para reduzir as dependências entre objetos, e também é conhecido como o principio do mínimo conhecimento, ou seja, “nunca converse com estranhos”.
Definição da Lei de Demeter
Para todos os métodos que estão no objeto X somente podem se comunicar com :
- Métodos de X;
- Parâmetros do próprio método;
- Por objetos criados ou instanciados pelo próprio método;
- Atributos de X;
Uma metáfora bastante usada na internet que exemplifica muito bem esse caso é a metáfora do cachorro:
“Quando você precisa que um cachorro ande, você dá a ordem para as pernas diretamente, ou para o cachorro? Obviamente que para o cachorro e este sabe o que precisa ser acionado para andar.”
Vantagens
As vantagens do uso da Lei de Demeter são:
- Diminuição das dependências (Baixo Acoplamento)
- Mais fácil de manter
- Mais fácil evoluir
Exemplo
Dado eu sou usuário de uma loja online,
Quando eu quero saber o total das minhas compras,
Então eu verifico no carrinho de compras.
Considere o trecho de código abaixo:
No exemplo apresentado acima para realizar o cálculo do valor total das compras é necessário o carrinho percorrer todos os itens e solicitando a produto qual é o seu valor, violando assim totalmente a Lei de Demeter, uma vez que, estamos fazendo uma solicitação ao produto que é um objeto que não faz parte dos argumentos do método ou membros da própria classe.
A abordagem mais correta seria:
Agora podemos verificar que nossa classe esta seguindo a lei e se comunicando apenas com objetos que ela tem o conhecimento, diminuindo assim a sua dependência (Baixo acoplamento).
Conclusão
É logico que a lei não se refere apenas a isso, este exemplo foi apenas uma breve introdução sobre o assunto, para quem quiser se aprofundar no assunto tem alguns links nas referências, porem podemos concluir o quanto é poderosa a OO e como pequenos ajustes podem deixar nossos projetos muita mais robustos e escaláveis.
Apresentação
Referencias
Este comentário foi removido pelo autor.
ResponderExcluirparabéns! muito didático! você foi killer usando o termo: "você não pode falar com estranhos"
ResponderExcluirOpa parabéns pelo artigo, 2 anos depois...
ResponderExcluirUm sintoma clássico da violação dessa lei é a famosa cascatinha de alterações, vc altera uma classe e a alteração se propaga para outras camadas do software causando um aborrecimento para quem da manutenção...