Please enable JavaScript.
Coggle requires JavaScript to display documents.
Ley de Demeter: No aceptes caramelos de desconocidos - Coggle Diagram
Ley de Demeter: No aceptes caramelos de desconocidos
¿Cómo solucionar las violaciones de la Ley de Demeter?
No hay una solución única para este tema
Depende del tipo de clase que tengamos
Objetos
Definen comportamientos
Normal pedirles que hagan cosas
Estructura de datos
Almacenan estado
Más habitual pedirles que nos den cosas
¿Qué opciones tienes?
Arquitectura
Buena arquitectura es importante en desacoplamiento de los distintos módulos del software
Comprender mejor tu dominio
Sobre-ingeniería es tan mala como la completa carencia de ella
Nuestro problema se sustenta en
conceptos claves
que lo definen
Al tenerlos claros, simplifica todo el proceso de desarrollo
Domain Driven Design explicada en los artículos de Carlos Morera
Añadir métodos extra
Opción más evidente y menos recomendada
En vez de varias llamadas, dejas cada objeto haga sus correspondientes subllamadas
Podrias tener algo como esto:
getX().doSomething()
Este a su vez dentro llamaría a: getY().doSomething()
Así sucesivamente, puede funcionar, pero normalmente esconder el problema, no solucionarlo
La problemática
Cuando clases necesitan utilizar algunos objetos unos cuantos niveles por debajo
¿Cuál es el problema aquí?
Generalmente el código es muy
propenso a modificaciones
Claro síntoma de que el código no está bien hecho
Antonio Leiva | Software Craftmanship
No forma parte de
principios SOLID
, considerado como anexo a los mismos
¿Qué es la Ley de Demeter?
¿Cuando se cumple la ley de demeter?
Teniendo función f de una clase C, esa función sólo llama funciones
Un objecto creado por f
Un objeto pasado como argumento a f
Un objeto almacenado en campo de C
C
Mecanismo detección de acoplamiento
Nuestro objeto no debería conocer entrañas de otros objetos que interactúa
¿Cómo detectar cuando se está violando esta ley?
Encontrar muchas llamadas concatenadas
Seguramente accediendo estructura interna de otra clase para llamar sus métodos