Si hablamos de la arquitectura y el desarrollo de software, debemos tener muy presentes los principios SOLID. Cuando se aplican, se consigue que el código sea más extensible, lógico y más fácil de leer. Si el desarrollador crea software siguiendo un mal diseño, el código puede volverse inflexible y más frágil. Y todos sabemos que, pequeños cambios en el software pueden provocar grandes errores.
¿Qué es SOLID?
SOLID es un acrónimo que representa cinco principios muy importantes cuando desarrollamos con el paradigma de la OOP, además, es un conocimiento fundamental que todo desarrollador debe conocer. Comprender y aplicar estos principios le permitirá escribir código de mejor calidad y, por lo tanto, ser un mejor desarrollador.
Estos 5 principios fueron presentados por Robert C. Martin (tío Bob), en su libro Principios de diseño y patrones de diseño. Sin embargo, el acrónimo SOLID real fue identificado más tarde por Michael Feathers.
¿Por qué aplicar SOLID?
Estos principios, cuando se combinan, facilitan al programador que el desarrollo de software sea fácil de mantener y ampliar. También facilitan a los desarrolladores evitar los olores de código, refactorizar fácilmente el código y también son parte del desarrollo de software ágil o adaptable.
Las ventajas de SOLID
Las ventajas y virtudes que acompañan a SOLID son claras:
- Una forma basada en principios de gestionar las dependencias, especialmente en una gran aplicación.
- Acoplamiento flojo (grado de interdependencia entre módulos de software)
- Más cohesión (el grado en que los elementos de un módulo pertenecen juntos)
- El código es más reutilizable, robusto, flexible, comprobable y mantenible.
Ahora vamos a analizar las letras de SOLID y veamos los detalles de cada uno de ellos:
01. Principio de responsabilidad única (SRP):
Una clase debe tener una y solo una razón para cambiar, lo que significa que una clase debe tener solo un trabajo.
Definición simple: no sobrecargue una clase con demasiadas responsabilidades.
Ventajas: Incremento de la cohesión, bajo acoplamiento, menor complejidad.
02. Principio abierto-cerrado (OCP):
Los objetos o entidades deben estar abiertos para extensión, pero cerrados para modificación.
Definición simple: debería poder extender el comportamiento de una clase, sin modificarlo.
Ventajas: mayor cohesión, código extensible, menos posibilidades de introducir errores en la aplicación existente.
03. Principio de sustitución de Liskov (LSP):
Los objetos de un programa deben ser reemplazables con instancias de sus subtipos sin alterar la corrección de ese programa.
Definición simple: los objetos de la clase derivada deben comportarse de manera consistente con las promesas hechas en el contrato de la clase base.
Ventajas: reutilización del código, acoplamiento reducido y menos posibilidades de introducir errores en la aplicación existente.
04. Principio de segregación de interfaz (ISP):
Muchas interfaces específicas del cliente son mejores que una interfaz de uso general.
Definición simple: los clientes no deben verse obligados a implementar interfaces que no utilizan.
Ventajas: Mayor cohesión, más extensible y robusto.
05. Principio de inversión de dependencia (DIP):
Los módulos de alto nivel no deben depender de módulos de bajo nivel. Ambos deberían depender de abstracciones.
Las abstracciones no deberían depender de los detalles. Los detalles deberían depender de las abstracciones.
Definición simple: las entidades deben depender de abstracciones, no de concreciones.
Ventajas: Desacoplar dependencias.
En definitiva, los principios SOLID son una serie de buenas prácticas que, bien seguidas, permitirán escribir mejor código. Si te ha parecido interesante este artículo, tenemos una serie de entradas preparadas que te ayudarán a convertirte en un mejor desarrollador y un conocedor de estos principios.