Tras recomendaros en otro post el libro Clean Code, he encontrado una serie de videos muy interesantes que recorren cada uno de los principios SOLID explicados al detalle a través de 5 charlas muy didácticas.
Recordar que los principios SOLID son una serie de buenas prácticas en el desarrollo orientado a objetos que debemos de tener en cuenta a la hora de diseñar nuestro software. Estos principios fueron agrupados en el acrónimo SOLID por Robert. C Martin (aka Uncle Bob). Básicamente estos principios son la base para poder entender y usar patrones de diseño que permiten que nuestro software tenga un bajo acoplamiento y una alta cohesión. La etapa de diseño de software es una de las partes mas importantes en el ciclo de vida del producto, ya que permitirá construir un producto mantenible, escalable y abierto a cambios.
Para ello vamos a realizar un recorrido por cada uno de los principios SOLID a través de unos videos de 5 a 10 minutos cada uno:
S – Single Responsability Principle
El principio de única responsabilidad establece que cada clase debe ocuparse de una sola responsabilidad. Visto desde otra perspectiva, Robert. Martin dice que cada clase debería tener una única razón para ser modificada. Si identificas que alguna de tus clases están desempeñando más de una responsabilidad, deberías partirla en n clases, una por cada responsabilidad. En este video se detalla la aplicación de este principio y evitar antipatrones como el God Object.
Se muestra un ejemplo en el que se detalla como debe separarse un objeto y la gestión de sus estados.
O – Open Close Principle
El principio Abierto/Cerrado especifica que una entidad software (una clase, módulo o función) debe estar abierta a extensiones pero cerrada a modificaciones. Dado por hecho que el software requiere cambios (diariamente) y que unas entidades dependen de otras, las modificaciones en el código de una de ellas puede generar indeseables efectos colaterales en cascada en todo el software. Por ello seguir este principio favorece un diseño que permite escalar la aplicación y extender la funcionalidad del software sin afectar a otros módulos de este. Para ello este ponente simula el desarrollo de una aplicación para pintar personajes de los Simpson en el que explica este principio a través de un genial ejemplo.
L – Liskov Substituion Principle
El principio de Sustitución Liskov fue definido por Barbara Liskov. Básicamente este principio nos dice que si en nuestro código estamos usando una clase, y esta clase es extendida, tenemos que poder utilizar cualquiera de las clases hijas y que el programa siga siendo válido. Parece un trabalenguas pero el principio defiende que no se debe obligar a las clases clientes a depender de clases o interfaces que no necesitan usar. Esta imposición se da cuando una clase o interfaz tiene más métodos de los que la clase cliente necesita para sí mismo. La moraleja es que debemos de separar los datos del comportamiento.
I – Interface Segregation Principle
La inversión de dependencias es el origen de la inyección de dependencias, una de las técnicas más usada en los frameworks para lidiar con las colaboraciones entre clases. Esto permite construir un código desacoplado, reutilizable , flexible y listo para separar las responsabilidades y permitir una alta cohesión.
Básicamente, en este video se explica que las clases deben implementar las interfaces que realmente utilizan por completo. Las clases cliente deben usar las implementaciones de dichas interfaces abstrayéndose de la implementación de cada elemento.
D – Dependency Inversion Principle
Este principio determina que las clases de alto nivel no deberían depender de las clases de bajo nivel, ambos deberían depender de abstracciones. Además las abstracciones no deberían depender de los detalles, son las implementaciones de los detalles deben depender de las abstracciones. En el video se muestran varios ejemplos:
Conclusión de los principios SOLID
Si te dedicas al desarrollo software, conocer los principios SOLID es algo básico que te ayudará en tu día a día. Si desarrollas software con un diseño de alta calidad te permitirá construir software mantenible, escalable y reutilizable.
¡Espero que hayas disfrutado de estas 5 microcharlas y te ayude a conocer mejor estos principios y comiences a aplicarlos!.