La Ley de Demeter: definición y ejemplos

180px-Demeter_MKL1888.pngLa ley de Demeter es un principio básico de la programación orientada a objetos. Sorprende al conocerlo su gran utilidad, sus resultados en proyectos de todos los tamaños y el poco conocimiento que la comunidad de desarrolladores tiene de su existencia.

Su enunciado básico es:

A method of an object should invoke only the methods of the following kinds of objects:

  1. itself
  2. its parameters
  3. any objects it creates/instantiates
  4. its direct component objects

Mejora de forma considerable la encapsulación y la cambiabilidad de nuestro código. Explicaremos en este artículo cual es su significado y como detectar los lugares en nuestro código donde no se cumple.

Una forma de comprender mejor esta ley podemos dar la vuelta al enunciado y enumerar los casos prohibidos: no se debe llamar a métodos de los objetos devueltos por otros métodos.

El caso más común que debemos evitar son las cadenas de métodos, de la forma:

a.getX().getY().getValue();

y sustituirlas por funciones que realicen dicha acción:

a.getXYValue();

Otro de los casos comunes en que no se cumple esta ley es en el que una función necesite muchas variables temporales. Se trata del mismo caso anterior, pero escrito de forma diferente, el código erróneo es de la forma:

X x = a.getX();
Y y = x.getY();
y.getValue();

Y por último, un síntoma muy común de que no se cumple esta función es que una clase requiera muchas otras para realizar su cometido y en consecuencia, en su cabecera se encuentren muchas instrucciones import.

Siguiento estas sencillas normas conseguiremos mejorar en gran medida la calidad de nuestro código.

Podeis encontrar más información en la página de la Ley de Demeter o en el paper de David Bock : "The Paperboy, the Wallet and the Law Of Demeter" aunque la documentación sobre esta ley en la lengua de Shakespeare es muy común en la red.

Posts relacionados:

Contacte

T'interessen els nostres serveis?

Contacta'ns