O paradigma da orientacao a objetos (OO) existe a muitos anos e e utilizado em grande parte dos projetos em desenvolvimento hoje, porem ate 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 e que muitos profissionais nao conhecem nada ou sabem pouco sobre OO. Mas sera que a culpa e realmente deles? Na graduacao onde deveriamos ver tudo sobre OO, acabamos vendo apenas os conceitos basicas como classe, atributos, heranca, polimorfismo, encapsulamento e etc.. Mas isso e apenas a base para o desenvolvimento de um projeto orientado a objetos, existem ainda os principios, leis, patterns e tecnicas que merecem muito a nossa atencao.O objetivo desse post e 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 dependencias entre objetos, e tambem e conhecido como o principio do minimo conhecimento, ou seja, nunca converse com estranhos.Definicao da Lei de DemeterPara todos os metodos que estao no objeto X somente podem se comunicar com :Metodos de X;Parametros do proprio metodo;Por objetos criados ou instanciados pelo proprio metodo;Atributos de X;Uma metafora bastante usada na internet que exemplifica muito bem esse caso e a metafora do cachorro:Quando voce precisa que um cachorro ande, voce da 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 sao:Diminuicao das dependencias (Baixo Acoplamento)Mais facil de manterMais facil evoluirExemploDado eu sou usuario de uma loja online,Quando eu quero saber o total das minhas compras,Entao eu verifico no carrinho de compras.Considere o trecho de codigo abaixo: No exemplo apresentado acima para realizar o calculo do valor total das compras e necessario o carrinho percorrer todos os itens e solicitando a produto qual e o seu valor, violando assim totalmente a Lei de Demeter, uma vez que, estamos fazendo uma solicitacao ao produto que e um objeto que nao faz parte dos argumentos do metodo ou membros da propria 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 dependencia (Baixo acoplamento). ConclusaoE logico que a lei nao se refere apenas a isso, este exemplo foi apenas uma breve introducao sobre o assunto, para quem quiser se aprofundar no assunto tem alguns links nas referencias, porem podemos concluir o quanto e poderosa a OO e como pequenos ajustes podem deixar nossos projetos muita mais robustos e escalaveis.ApresentacaoReferenciashttp://en.wikipedia.org/wiki/Law_of_Demeterhttp://www.ccs.neu.edu/research/demeter/http://www.ccs.neu.edu/research/demeter/demeter-method/LawOfDemeter/paper-boy/demeter.pdf Para quem deseja ser um desenvolvedor que preza acima de tudo pela qualidade do codigo que esta criando, a leitura do livro de Robert C. Martin e quase que uma leitura obrigatoria. Abaixo esta um texto que tirei da orelha do livro, CODIGO LIMPO e a minha #dicadelivro."Ha duas vertentes para se obter habilidade profissional: conhecimento e trabalho. Voce deve adquirir o conhecimento dos principios, padroes, praticas