A LEI DE DEMETER
Na informática existe uma heurística chamada a Lei de Demeter (do inglês The Law of Demeter) que diz:
“um módulo não deve conhecer as entranhas dos objetos que ele manipula.”
Isso significa que um objeto não deve expor a sua estrutura interna através dos métodos, ao invez disso, o objeto deve esconder a sua estrutura interna.
Mais precisamente, a Lei de Demeter fala que um método f de uma classe C somente pode chamar os métodos:
- da classe C;
- de um objeto criado por f;
- de um objeto passado como argumento para f;
- de um objeto mantido por uma variável de C;
O método f não deve invocar métodos de objetos que foram retornados por outras funções com permissão. De maneira simplória, a Lei de Demeter fala: “Fale somente com seus amigos, não fale com estranhos”.
O código presente na Figura 22 viola a Lei de Demeter. Afinal, esse chama a função getStratchDir() no retorno da função getOptions() e então chama a função getAbsolutePath() no retorno da função getStratchDir().
Figura 22 – Exemplo de violação da Lei de Demeter.