Ingeniería del software: Principios SOLID

¿Qué son los principios SOLID?

Cuando hablamos de principios SOLID, nos referimos a un conjunto de prácticas que definen una forma de desarrollar, su aplicación nos permite generar un código más limpio, mantenible, robusto y escalable.

Antes de entrar a analizar estos principios debemos tener claros dos conceptos:

  • Acoplamiento: define el grado de interdependencia de los elementos, un alto acoplamiento implica un código muy susceptible a los cambios, difícil de mantener y poco escalable.
  • Cohesión: La cohesión es el grado de eficiencia con el que los elementos trabajan juntos alcanzando un mayor rendimiento que si lo hiciesen de manera individual.

Con esta sencilla definición podemos observar que el acoplamiento es un término negativo mientras que la cohesión es algo deseado en nuestro proyecto. Necesitamos por tanto, crear un código con un bajo acoplamiento pero con una alta cohesión.

S.O.L.I.D.

Las siglas de la palabra solid definen, cada una, un principio de desarrollo:

  • S -> Principio de responsabilidad única (single responsibilty principle).
  • O -> Principio de abierto/cerrado (open/close principle).
  • L -> Principio de sustitución de Liskov (Liskov substitution principle).
  • I -> Principio de segregación de interfaces (Interface segregation principle).
  • D -> Principio de inversión de dependencias (dependency inversion principle).

Los principios SOLID en detalle:

– Principio de responsabilidad única:

Este principio busca la responsabilidad única, es decir, cada clase debe estar definida de tal modo que tenga una única función y a la vez, una única razón para ser modificada. Se denomina «responsabilidad» a esta razón para cambiar.

– Principio de abierto/cerrado:

El axioma principal de este principio es crear un código que puedas extender, pero que no debas modificar, es decir, un código que esté abierto a ampliaciones pero cerrado a modificaciones.

– Principio de sustitución de Liskov:

Barbara Liskov definió a través de este principio la importancia de que objeto debería ser reemplazable por instancias de sus subtipos sin que ello afecte al correcto funcionamiento del código.

Un ejemplo tradicional es el de la clase animal, con un método «saltar», extendida por la clase «elefante», el cual es incapaz de saltar, generando así una violación de este principio.

– Principio de segregación de interfaces:

Aquí se expone la eficiencia en la creación de interfaces, tratando de aplicar sobre ella una especie de principio de responsabilidad única, es decir, buscamos crear interfaces que cumplan una función concreta.

Es preferible la creación de múltiples interfaces específicas a la creación de una general cuyos métodos no siempre tendrán uso.

– Principio de inversión de dependencias:

Este principio sustenta el bajo acoplamiento del código, buscando la abstracción de los elementos del sistema a desarrollar y logrando un bajo nivel de interdependencia.

Más información sobre los principios SOLID.

¿Te ha resultado útil?

Promedio de puntuación 5 / 5. Recuento de votos: 2