FabrícioRonchi

Lei de Demeter (LoD)

20 February 2014

Introdução

A lei de Demeter foi desenvolvida em 1988 por Karl Lieberherr e Ian Holland, da Northeastem Univerity, com uma idéia extremamente simples: organizar e reduzir dependências entre classes.

Dependência entre Classes

Existe uma dependência entre classes quando uma classe faz referência a outra, através de execução de algum método seu. Esta dependência pode causar alguns “prejuízos” ao projeto.

  • Rigidez: uma mudança em uma classe afeta muitas outras partes do sistema;
  • Fragilidade: quando você realiza uma alteração, partes inesperadas no sistema falham;
  • Imobilidade: não é possível reutilizar partes de uma aplicação em outra, por não ser possível desacoplar este código.

Lei

Esta lei tem dois propósitos primários:

  • Simplificar modificações;
  • Simplificar a complexidade da programação.

Não Seguindo a Lei de Demeter

function obterDesconto() {
  var totalDesconto = 0;
	for (var i = 0; i < this.Items.Count; i++) {
		totalDesconto += this.LineItems[i].Desconto.Total;
	}
	return totalDesconto;
}

Seguindo a Lei de Demeter

function obterDesconto() {
	var totalDesconto = 0;
	for (var i = 0; i < this.Items.Count; i++) {
		totalDesconto += this.LineItems[i].obterDesconto();
	}
	return totalDesconto;
}

Qualquer dúvida, chama aí no Twitter!