Ley Demeter

1.      Definiciones

“No hables con desconocidos”

Esta regla fue formulada en la Northeastern University en 1987 por Ian Holland. Y la explica magistralmente el blog Refactoring.

Es una regla comúnmente aceptada de buen Diseño, que se basa en el mínimo conocimiento del modelo de objetos, de modo que se reduzca el número y complejidad de las interrelaciones.

 

2.      Explicación

Un método M de un objeto O debería invocar sólo métodos de los siguientes tipos de objetos:

1.  Si mismo 

2.  Sus parámetros

3.  Cualquier objeto instanciado por el

4.  Objetos con herencia de él

Esto hace que para la programación de cada método, sólo sea necesario un conocimiento del entorno inmediato del método.

Si para el funcionamiento del sistema fuera necesario invocar un método más lejano, no se hará directamente, sino que cada método invoca a otro de su entorno cercano hasta llegar al que debe invocarse en último extremo.

Aunque a priori ésto pudiera parecer poco eficiente, en realidad no lo es. Al seguir rígidamente esta ley, conseguimos un acoplamiento bastante menor, lo cual siempre redunda en una simplicidad de los métodos y una mejor adaptabilidad a nuevas situaciones.

 

3.      Ejemplo

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();

Conclusiones

 

Mejora de forma considerable la encapsulación y el mantenimiento de nuestro código

 

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.

 

 

Bibliografía

 

http://es.wikipedia.org/wiki/Dem%C3%A9ter

 

http://www.mononeurona.org/news/display/516

 

http://alejandroandre.wordpress.com/2006/10/18/la-ley-de-demeter/

 

 

About omaracostacasas

ING SOFTWARE
This entry was posted in Ingenieria de Software. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s