Acoplamento, Coesão e a Lei de Deméter

oLei de Demeter indica que você deve falar apenas com objetos que você conhece diretamente. Ou seja, não execute encadeamento de métodos para falar com outros objetos. Quando você faz isso, você está estabelecendo vínculos impróprios com os objetos intermediários, inadequadamenteacoplamento seu código para outro código.

Isso é ruim.

A solução seria para a classe que você conhece essencialmente expor wrappers simples que delegam a responsabilidade ao objeto com o qual ela se relaciona.

Isso é bom.

Mas, isso parece resultar na classe ter baixocoesão. Ele não é mais simplesmente responsável por precisamente o que faz, mas também tem os delegados que, em certo sentido, tornam o código menos coeso ao duplicar partes da interface de seu objeto relacionado.

Isso é ruim.

Isso realmente resulta na redução da coesão? É o menor de dois males?

Esta é uma daquelas áreas cinzentas de desenvolvimento, onde você pode debater onde está a linha, ou existem maneiras fortes e baseadas em princípios de tomar uma decisão de onde traçar a linha e quais critérios você pode usar para tomar essa decisão?

questionAnswers(6)

yourAnswerToTheQuestion