Saltar al contenido

¿Qué son los principios SOLID en programación?

La programación, en sus etapas iniciales, puede parecer sencilla: aprender variables, tipos de datos, operadores, condicionales y ciclos es como las matemáticas básicas. Sin embargo, escribir código limpio, mantenible y escalable es un arte que requiere buenas prácticas. Estas buenas prácticas son las que diferencian a un programador Junior de un Senior. Mientras el Junior busca que el código funcione, el Senior también se asegura de que sea comprensible y sostenible a largo plazo.

Entre las herramientas más importantes para lograr esto se encuentran los principios SOLID, una guía fundamental para diseñar software de calidad. Pero, ¿qué son estos principios, de dónde provienen y cómo se aplican?

Una breve historia de los principios SOLID

Los principios SOLID fueron introducidos por Robert C. Martin, también conocido como “Tío Bob”, un renombrado ingeniero de software y mentor en la comunidad. Martin los popularizó a través de su libro Clean Code, que es una referencia obligatoria para cualquier programador que desee escribir código limpio.

El acrónimo SOLID, sin embargo, fue acuñado posteriormente por Michael Feathers, quien organizó estos principios para facilitar su recordación. Entre ellos, el principio de sustitución de Liskov (L) fue desarrollado por Barbara Liskov, una destacada ingeniera de software y pionera en la programación orientada a objetos.

Estos principios surgieron como respuesta a la creciente complejidad del software, con el objetivo de crear aplicaciones más sostenibles, comprensibles y fáciles de extender o modificar.

Conceptos previos: Programación Orientada a Objetos

  • Clases y objetos: Las clases son plantillas que definen propiedades y métodos, mientras que los objetos son instancias concretas de estas clases.
  • Pilares de la POO:
    • Abstracción: Extraer las características esenciales de un objeto para representar su naturaleza.
    • Encapsulamiento: Proteger los datos de un objeto para evitar manipulaciones no autorizadas.
    • Herencia: Permitir que una clase hija reutilice las propiedades y métodos de una clase padre.
    • Polimorfismo: Permitir que diferentes objetos compartan comportamientos similares, pero implementados de maneras distintas.
  • Interfaces: Son contratos que definen los métodos que una clase debe implementar, garantizando coherencia en el código.

Los principios SOLID explicados

1. Principio de Responsabilidad Única (S)

Cada clase debe tener una única responsabilidad o razón para cambiar.

Ejemplo: En lugar de tener una clase que gestione todas las habilidades de un superhéroe (volar, trepar muros, lanzar fuego), se pueden crear clases específicas para cada habilidad y asignarlas según corresponda.

2. Principio de Abierto/Cerrado (O)

Las clases deben estar abiertas para extensión, pero cerradas para modificación.

Ejemplo: Si se desea agregar una nueva habilidad a un superhéroe, como invisibilidad, no se debe modificar su clase principal. En su lugar, se puede crear una nueva clase que implemente esa habilidad y asignarla mediante interfaces.

3. Principio de Sustitución de Liskov (L)

Las subclases deben ser intercambiables con sus clases padres sin causar problemas.

Ejemplo: Superman y Iron Man deben poder usarse indistintamente como superhéroes voladores, aunque su forma de volar sea distinta.

4. Principio de Segregación de Interfaces (I)

Los clientes no deben depender de interfaces que no utilizan.

Ejemplo: En lugar de tener una interfaz general que incluya todas las habilidades de un superhéroe (volar, trepar muros, lanzar fuego), se deben crear interfaces específicas para cada habilidad y asignarlas según corresponda.

5. Principio de Inversión de Dependencias (D)

Las clases de alto nivel no deben depender de las de bajo nivel; ambas deben depender de abstracciones.

Ejemplo: En un equipo como los Avengers, en lugar de que la clase principal (Avengers) dependa de clases específicas como Iron Man o Hulk, se usa una interfaz “Avenger” para permitir que cualquier superhéroe pueda unirse sin modificar la clase principal.

Conclusión

Los principios SOLID no solo mejoran la calidad del código, sino que también facilitan su mantenimiento y extensión a largo plazo. Aunque su aplicación requiere práctica y experiencia, dominarlos es un paso fundamental para cualquier programador que desee destacarse en el desarrollo de software.

Dominar estos principios es un camino que vale la pena recorrer, y el resultado es código que no solo funciona, sino que también perdura en el tiempo.

 

Compartir este Articulo