Please enable JavaScript.
Coggle requires JavaScript to display documents.
Ley de Demeter - Coggle Diagram
Ley de Demeter
Problematica
El problema surge cuando una de las clases necesita utilizar alguno
de los objetos unos cuantos niveles por debajo.
-
El problema aqui es basicamente estamos acoplando código a la estructura de las clases que componen la cadena de llamadas.
Si mañana cambia esa estructura en cualquiera de las clases involucradas, este código se
ve afectado.
¿Es esto malo? Depende, pero en general sí, porque este código es muy
propenso a modificaciones:
Mil refactorizaciones diferentes pueden resultar en un
cambio en el mismo.
Y eso es un claro síntoma de que el código no está bien hecho.
¿Qué es?
La ley de Demeter básicamente es un mecanismo de acomplamiento, que dice que nuestro objeto no debería conocer las entrañas de otros objetos con los que interactúa.
La Ley de Demeter se cumple cuando, teniendo una
función f de una clase C, esa función sólo llama a funciones de:
-
Opiniones
"Tampoco hace falta ser extremadamente estrictos con estas reglas, sino que hay que ver cuando realmente nos estamos aprovechando del sistema para cargarnos las reglas."
"Si estás usando un elegante encapsulamiento de clases, pero luego lo llenas todo
de getters, estás reventando ese encapsulamiento."
"Una forma fácil de detectar que se está violando esta Ley es encontrarte con muchas
llamadas concatenadas."
El código anterior se podría escribir de la siguiente forma, y seguiría siendo igual de
inválido:
-
-