🧱 ¿Qué son los principios SOLID?
SOLID es un acrónimo que resume cinco principios diseñados para hacer el código más comprensible, flexible y mantenible. Fueron popularizados por Robert C. Martin (Uncle Bob) a principios de los años 2000, aunque algunos fueron planteados antes por otros autores.
📐 ¿Qué significa cada letra de SOLID?
1. S — Single Responsibility Principle (SRP)
🧠 «Una clase debe tener una única razón para cambiar»
- Significado: Cada clase debe encargarse de una única tarea o responsabilidad.
- ✅ Bueno: Una clase
Facturasolo gestiona facturas. - ❌ Malo: Una clase
Facturaque además guarda logs o envía emails.
📚 Similar a: Separación de responsabilidades, separación de preocupaciones (SoC).
💡 Curiosidad: SRP no es solo para clases, también se aplica a funciones, módulos, etc.
2. O — Open/Closed Principle (OCP)
🧠 «El software debe estar abierto para su extensión, pero cerrado para su modificación»
- Significado: Puedes extender el comportamiento de una clase sin tener que modificar su código base.
- ✅ Bueno: Usar interfaces o herencia para añadir funcionalidad.
- ❌ Malo: Editar constantemente una clase antigua para nuevas funciones.
📚 Relacionado con: Polimorfismo, patrón estrategia.
🎭 Anécdota: Se basa en ideas de Bertrand Meyer (1988), autor de Eiffel.
3. L — Liskov Substitution Principle (LSP)
🧠 «Los objetos de una clase derivada deben poder sustituir a los de su clase base sin alterar el comportamiento del programa»
- Significado: Si
Perrohereda deAnimal, debería poder usarse comoAnimalsin romper el sistema. - ✅ Bueno: Una subclase que cumple las expectativas del padre.
- ❌ Malo: Una clase
Aveque hereda dePájaropero no puede volar.
📚 Relacionado con: Herencia segura, contratos de clase.
👩🔬 Curiosidad: Propuesto por Barbara Liskov en 1987.
4. I — Interface Segregation Principle (ISP)
🧠 «Una clase no debe estar forzada a implementar interfaces que no usa»
- Significado: Es mejor tener muchas interfaces pequeñas y específicas que una grande y genérica.
- ✅ Bueno: Interfaces como
IImprimible,IGuardable, etc. - ❌ Malo: Una interfaz
IMegaSuperInterfacecon 20 métodos que casi nadie usa.
📚 Similar a: Principio de mínimo conocimiento.
🔧 Ejemplo clásico: En una impresora 3D, no debería tener que implementar métodos de escaneo si no escanea.
5. D — Dependency Inversion Principle (DIP)
🧠 «Depende de abstracciones, no de concreciones»
- Significado: Las clases deben depender de interfaces, no de implementaciones concretas.
- ✅ Bueno: Usar una interfaz
IBaseDeDatosy luego inyectarMySQL,PostgreSQL, etc. - ❌ Malo: Una clase que instancie directamente
new MySQL().
📚 Relacionado con: Inversión de control, inyección de dependencias.
🚪 Metáfora: En vez de construir la casa con ventanas de una marca fija, haces huecos estándar y decides después qué poner.
🌱 ¿De dónde vienen?
Los principios SOLID beben de muchos conceptos de la ingeniería de software:
- Programación orientada a objetos (POO)
- Principios de diseño de software de los años 80 y 90
- Patrones de diseño (como los del libro «Design Patterns» de la Banda de los Cuatro)
- Principios de arquitectura limpia
🧩 Otros principios o similares
Aunque SOLID es muy conocido, también existen otros:
- DRY (Don’t Repeat Yourself)
- KISS (Keep It Simple, Stupid)
- YAGNI (You Aren’t Gonna Need It)
- GRASP (General Responsibility Assignment Software Patterns)
📌 ¿Por qué es importante?
- Hace el código más escalable y mantenible
- Facilita el trabajo en equipo
- Evita la deuda técnica
- Promueve una arquitectura limpia



Deja un comentario