Principios SOLID: Qué son, cuáles, y qué beneficios aporta usarlos
Antonio Leiva

Los Principios SOLID son uno de los conceptos de programación y diseño de software más populares.

Seguramente ya has intentado muchas veces aprenderlos y aplicarlos en tu día a día, pero se te siguen resistiendo.

Esto le pasa a todo el mundo, porque son conceptos abstractos difíciles de explicar y no se dan los detalles necesarios para bajarlos a tierra.

Soy Antonio Leiva, ingeniero de software y formador, y tras enseñarles a muchos de mis alumnos este principios, puedo darte las claves para que los entiendas y los apliques de una vez por todas.

Además, si llegas hasta el final, vas a descubrir otro Principio que, aunque inicialmente no forma parte de los Principios SOLID, es vital aplicarlo también y muchas veces trabaja en conjunto.

Sigue leyendo los artículos porque no te lo desvelaré hasta el final 🙈

O si lo prefieres, puedes descargarte el contenido en formato PDF y leerlo donde quieras. Te he preparado esta guía de Principios SOLID para ti.

¿Qué son los Principios SOLID?

Son un conjunto de principios aplicables a la Programación Orientada a Objetos que, si los usas correctamente, te ayudarán a escribir software de calidad en cualquier lenguaje de programación orientada a objetos. Gracias a ellos, crearás código que será más fácil de leer, testear y mantener.

Los principios en los que se basa SOLID son los siguientes:

Estos principios son la base de mucha literatura que encontrarás en torno al desarrollo de software: muchas arquitecturas se basan en ellos para proveer flexibilidad, el testing necesita confiar en ellos para poder validar partes de código de forma independiente, y los procesos de refactorización serán mucho más sencillos si se cumplen estas reglas. Así que es muy conveniente que asimiles bien estos conceptos.

Fueron publicados por primera vez por Robert C. Martin, también conocido como Uncle Bob, en su libro Agile Software Development: Principles, Patterns, and Practices. Una persona que te recomiendo seguir, y echarle un vistazo a su blog de vez en cuando.

¿Qué beneficios aporta usar los Principios SOLID?

Las ventajas de utilizar los Principios SOLID son innumerables, ya que nos aportan todas esas características que siempre queremos ver en un software de calidad.

En cada uno de los principios nos iremos centrando en qué aportan específicamente, pero es interesante hacer un resumen general de lo que conseguiremos con ellos:

Software más flexible: mejoran la cohesión disminuyendo el acoplamiento

Los conceptos de cohesión y acoplamiento merecen un artículo a parte, pero a grandes rasgos lo que buscamos de un buen código es que sus clases puedan trabajar de forma independiente y que el cambio de uno afecte lo menos posible al resto.

Obviamente cuando dos clases se relacionan entre sí para trabajar juntas (y esto tiene que ocurrir sí o sí), va a existir un acoplamiento entre ellas.

Pero existen distintos niveles de acoplamiento, y gracias a algunos de los Principios SOLID, podemos relajar esas dependencias y hacerlas mucho más flexibles a cambios.

Te van a hacer entender mucho mejor las arquitecturas

Siempre que hablo de arquitecturas, noto que hay una barrera importante para entender cómo aplicarlas y qué beneficios aportan.

Esto es porque primero hace falta entender los principios sobre los que se sustentan, y los principios SOLID son muy importantes para ello.

Simplifican la creación de tests

Todo esto está muy relacionado con los puntos anteriores: si tienes tu código desacoplado y una buena arquitectura, los tests van a ser mucho más sencillos.

En un vídeo anterior ya comentaba los 7 errores que solemos cometer al escribir tests, y mucho del tema va por aquí.

Al final piensa que todo es como una cadena: si aplicas bien los principios, organizas mejor tu código. Esto te permite definir una arquitectura que hará que los tests sean más sencillos.

Podría decirse por tanto que los Principios SOLID son parte de la base de un código de calidad.

Los Principios SOLID están muy interrelacionados

Estos principios actúan como un todo. No es casualidad que se expliquen de forma conjunta.

Y esto tiene dos consecuencias muy importantes de entender:

Unos principios no pueden existir sin los otros

Una pregunta muy recurrente en mi formación de Architect Coders cuando vemos estos Principios es que parece que al querer aplicar uno de ellos, hay otro que necesitan aplicar inevitablemente.

¡Claro! Ahí está la gracia. Aún no hemos hablado de los Principios a fondo, pero por poner un ejemplo:

Imagina que tienes una clase A que tiene un acoplamiento muy fuerte con una clase B, de tal forma que cada vez que cambia B inevitablemente tiene que cambiar A.

Esto es muy posible que esté incumpliendo el Principio de Responsabilidad Única. La forma de cumplirlo sería haciendo que cuando B cambie, A no lo haga. Y para esto, la solución puede ser aplicar el Principio de Inversión de Dependencias.

¡No pasa nada! Esto es muy normal y te pasará casi siempre.

Un mismo problema se puede resolver desde dos perspectivas distintas en función de en qué Principio nos enfoquemos cuando lo resolvamos. Pero el resultado será el mismo.

Al cumplir un Principio puede que estés incumpliendo otro

Esto es lo más difícil de aceptar: muchas veces es imposible cumplir todos los Principios a la vez.

Porque al aplicar un Principio, se puede estar dando la espalda a otro.

Pero no te obsesiones con esto: al final lo importante es entender la potencia de cada Principio.

Y ese conocimiento unido a la experiencia te irá diciendo poco a poco cuáles son las mejores decisiones a tomar.

Cómo aprender a usar los Principios SOLID

Ahora que ya tenemos claros los conceptos, puedes empezar a entenderlos uno a uno y aprender cómo aplicarlos.

Para ello, te animo a que te descargues de forma gratuita la guía de Principios SOLID que he preparado para ti. Con todo el contenido en PDF para que puedas leerlo donde quieras.

También, en el siguiente artículo, verás el primero de los Principios: El Principio de Responsabilidad Única.

Principio Open/Closed (SOLID 2ª parte)

El principio Open/Closed nos dice que una entidad de código debe estar abierta a extensión y cerrada a modificaciones. Segunda parte de los principios SOLID

Principio Open/closed

Quizá también te interese…

Unidirectional Data Flow: Qué es y cómo funciona en Android

Unidirectional Data Flow: Qué es y cómo funciona en Android

Hay algunos conceptos que están empezando a resonar muy fuerte en Android, y Unidirectional Data Flow es uno de ellos. Como puede que sepas si estás apuntado a la newsletter, me he planteado escribir una serie de artículos sobre MVI (Model View Intent), y me he topado...

7 razones por las que te cuesta tanto hacer tests

7 razones por las que te cuesta tanto hacer tests

Hacer tests es una de las habilidades que más cuesta dominar a los desarrolladores, y esto es muy normal. Primero porque hacen falta conocimientos de desarrollo de software de alto nivel para que los tests sean más sencillos de hacer, y segundo porque muchas veces no...

0 comentarios

Enviar un comentario

Los datos personales que proporciones a través de este formulario quedarán registrados en un fichero de Antonio Leiva Gordillo, con el fin de gestionar los comentarios que realizas en este blog. La legitimación se realiza a través del consentimiento de la parte interesada. Si no se acepta, no podrás comentar en este blog. Los datos que proporciona solo se utilizan para evitar el correo no deseado y no se usarán para nada más. Puede ejercer los derechos de acceso, rectificación, cancelación y oposición en contacto@devexperto.com.

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Acepto la política de privacidad *