📌 Principio de Conocimiento Mínimo (Ley de Deméter)
La Ley de Deméter (Law of Demeter), también conocida como el Principio de Conocimiento Mínimo, establece que un objeto debe tener conocimiento y acceso limitado únicamente a sus objetos más cercanos, reduciendo así el acoplamiento del sistema.
🧐 ¿Qué es la Ley de Deméter?
La Ley de Deméter busca que los objetos o módulos tengan la menor cantidad posible de conocimiento sobre otros componentes del sistema. De esta manera, se disminuyen dependencias innecesarias, resultando en código más flexible y mantenible.
🚀 Beneficios clave de aplicar la Ley de Deméter
- Reducción de acoplamiento: Menos dependencias directas entre componentes.
- Mayor mantenibilidad: Facilita la comprensión y cambios del código.
- Menor impacto ante cambios: Cambios en un módulo afectan mínimamente a otros.
- Código claro y entendible: Simplifica interacciones y dependencias.
🎯 Estrategias para aplicar correctamente la Ley de Deméter
- Comunicación directa: Habla solo con tus colaboradores inmediatos.
- Evita cadenas largas de llamadas: No accedas a objetos indirectos (ej.
obj.a.b.c
). - Define interfaces claras: Usa interfaces y métodos explícitos para interacción.
- Delegación: Delega responsabilidades claramente definidas.
🛠️ Ejemplo práctico: Aplicando la Ley de Deméter en JavaScript
⚠️ Violación de la Ley de Deméter (alto acoplamiento):
class Motor {
arrancar() {
console.log("Motor encendido");
}
}
class Automovil {
constructor() {
this.motor = new Motor();
}
}
class Persona {
constructor() {
this.auto = new Automovil();
}
iniciarAuto() {
this.auto.motor.arrancar(); // Violación (conocimiento indirecto)
}
}
✅ Aplicando correctamente la Ley de Deméter:
class Motor {
arrancar() {
console.log("Motor encendido");
}
}
class Automovil {
constructor() {
this.motor = new Motor();
}
arrancarMotor() {
this.motor.arrancar();
}
}
class Persona {
constructor(auto) {
this.auto = auto;
}
iniciarAuto() {
this.auto.arrancarMotor(); // Correcto (conocimiento directo)
}
}
const miAuto = new Automovil();
const conductor = new Persona(miAuto);
conductor.iniciarAuto();
Este enfoque reduce el acoplamiento y hace que cada clase interactúe únicamente con sus colaboradores inmediatos.
📚 Consejos adicionales al aplicar la Ley de Deméter
- Revisa regularmente tu código para detectar interacciones indirectas.
- Implementa métodos intermediarios que gestionen el acceso a objetos secundarios.
- Asegura claridad en la delegación de responsabilidades entre módulos.
🔍 Conclusión: Código desacoplado y claro
La Ley de Deméter es esencial para lograr un código limpio, desacoplado y fácil de mantener. Aplicando este principio, minimizas dependencias innecesarias y simplificas significativamente la estructura de tu software.
Adopta esta ley en tu práctica diaria para optimizar tu código y mejorar su calidad.