Son cinco reglas que se usan como base para escribir código de calidad y fácilmente mantenible en programación orientada a objetos. El término lo acuñó el gran Robert Cecil Martin (también conocido como Uncle Bob).
Si sigues estos cinco principios tu software debería poder mantenerse y ampliarse de forma mucho más rápida y sencilla. Es muy recomendable conocerlos si quieres ser un buen desarrollador (y usas programación orientada a objetos). Además, queda bien ponerlo en el curriculum y puede que hasta te paguen más. Se rumorea que hasta se liga más si dices que usas SOLID pero no está 100% demostrado.
(Una cosilla antes de que sigas leyendo… estoy escribiendo un libro muy divertido sobre buenas prácticas en PHP titulado «Aliens contra Elefantes»).
SOLID es un acrónimo y cada letra se refiere a uno de los principios (te pongo las traducciones en lugar de sus nombres en inglés):
- S (Single responsibility principle / Acrónimo SRP) – Principio de responsabilidad única. Cada clase debe tener una única razón para cambiar (o lo que es lo mismo debe hacer una única cosa). Nada de clases para todo.
- O (Open/closed principle / Acrónimo OCP) – Principio de cerrado/abierto. Una clase debe poder ampliarse sin modificarla. Parece magia pero no.
- L (Liskov substitution principle / Acrónimo: LSP) – Principio de sustitución de Liskov. Una clase puede sustituirse por una subclase y el programa debe seguir funcionando. Este principio lo introdujo Bárbara Liskov, que era (y es) una cerebrito.
- I (Interface segregation principle / Acrónimo ISP) – Principio de segregación de los interfaces. No intentes usar un interface o una clase abstracta para todo.
- D (Dependency inversion principle / Acrónimo DIP) – Principio de inversión de dependencias. Mejor usar muchos interfaces y clases abstractas. Y los interfaces deben definirlos las clases de nivel más alto. Vamos, que donde manda capitán no manda marinero.
En mi próximo libro Aliens contra Elefantes / Buenas prácticas en PHP hablaré, entre otras cosas, de los principios SOLID ¡No te lo pierdas!