Hamburger Icon
Repaso a los principios SOLID: (O) Principio Abierto/Cerrado

Repaso a los principios SOLID: (O) Principio Abierto/Cerrado

Pablo Escobar fue un narcotraficante colombiano, conocido como uno de los líderes más poderosos y peligrosos del Cartel de Medellín en la década de 1980. ¿What? ¿Qué tiene que ver esto con los principios SOLID? Pues tiene que ver, y mucho, con la O.

Los principios SOLID son un conjunto de cinco principios de diseño de software que fueron propuestos por el programador Robert (tío Bob) Martin. Estos principios son guías que ayudan a desarrollar software que sea más mantenible, flexible y fácil de entender. Cada letra de la palabra "SOLID" representa uno de estos principios, en este post vamos a ver en qué consiste la O.

Aunque Pablo Escobar es un personaje controversial, podemos considerar su liderazgo y enfoque en la expansión de su imperio del narcotráfico como una analogía para el principio OCP.

Antes de la O viene S, por si te la saltaste.

OCP (Open Closed Principle)

Principio abierto cerrado. El nombre no dice mucho, pero ahora lo vamos a comprender bien. Antes de empezar, un inciso. Aunque este principio se popularizó gracias a Robert C. Martin, lo propuso inicialmente Bertrand Meyer.

Definición

El OCP establece que las entidades de software, ya sean clases, módulos, funciones o componentes, deben estar abiertas para su extensión pero cerradas para su modificación.

En otras palabras, una entidad debe poderse extender para agregar nuevas funcionalidades o comportamientos sin modificar su código fuente original.

Al igual que el OCP promueve la extensión sin modificación, Pablo Escobar se centró en la expansión de su imperio del narcotráfico sin cambiar su enfoque principal. A medida que el negocio crecía, diversificaba las operaciones, pero mantenía su objetivo central: controlar la producción y distribución de drogas. Mola. No, en verdad no.

Beneficios

El objetivo del OCP es lograr un diseño más flexible y resistente a cambios, lo que es especialmente importante en sistemas grandes y complejos, donde las modificaciones directas a menudo pueden tener efectos imprevistos en otras áreas del código.

Pablo Escobar era conocido por ser un líder que tomaba decisiones estratégicas para adaptarse a situaciones cambiantes y desafíos en el mundo del narcotráfico.

Seguir este principio ayuda a evitar efectos secundarios no deseados y cambios que puedan afectar otras partes del sistema que ya funcionan correctamente. Favorece la reutilización del código existente, permite una arquitectura más modular y fácil de mantener y facilita la adición de nuevas funcionalidades sin afectar el código existente.

Aplicación

Para poder hacer clases o componentes siguiendo este principio, puedes tener en cuenta esto cuando vayas a ponerte con su diseño.

Utilizar la herencia o interfaces. Al diseñar clases, piensa en las posibles extensiones que podrían requerirse en el futuro.

Al igual que las clases se relacionan entre ellas creando así conexiones con clases base o interfaces para agregar nuevas funcionalidades, Escobar estableció alianzas y conexiones con diferentes grupos para expandir su poder y llegar a nuevos mercados.

Aplicar el principio de sustitución de Liskov. Asegúrate de que las subclases que extienden una clase base puedan ser utilizadas en lugar de la clase base sin cambiar el comportamiento esperado. Esto significa que las subclases deben cumplir con el contrato de la clase base y no deben alterar el significado de los métodos heredados.

De manera similar, Pablo Escobar tenía un sistema jerárquico en su cartel que le permitía delegar tareas específicas a otros miembros mientras él seguía siendo el líder central.

Inyección de dependencias. Importante para permitir que una clase reciba sus dependencias como parámetros en lugar de instanciarlas internamente. Esto facilita la extensión ya que puedes cambiar las dependencias sin modificar el código de la clase.

Análogamente, podríamos considerar que las drogas son "dependencias" en la cadena de suministro del narcotráfico. Así como en la inyección de dependencias, donde se suministran componentes externos a una clase, en el narcotráfico, se suministran drogas a través de una red de distribución.

Evitar código condicional para lógica de extensión. No utilices estructuras condicionales complejas en el código para habilitar o deshabilitar funcionalidades, crea una subclase en su lugar.

Si Pablo Escobar hubiera evitado decisiones basadas en condiciones específicas y hubiera adoptado enfoques más flexibles, podría haber logrado una adaptabilidad más efectiva a medida que las circunstancias cambiaban en el mundo del narcotráfico.

Conclusiones

Es importante mencionar que el OCP no implica que un código nunca deba cambiarse, ya que eso sería irrealista. En cambio, busca minimizar los cambios en las partes del código que ya funcionan correctamente y están estables.

A lo largo del tiempo, Escobar se enfrentó a diferentes desafíos y adversarios. Sin embargo, en lugar de modificar fundamentalmente sus métodos de operación, se adaptaba a las circunstancias para mantener su dominio. Esta adaptabilidad puede verse como una extensión de su estrategia sin cambiar la base de su imperio.

El cumplimiento del OCP requiere un buen diseño de clases y una identificación cuidadosa de las áreas que podrían cambiar en el futuro.

En general, seguir este principio promueve un código más robusto, flexible y menos propenso a errores cuando se enfrenta a cambios y evoluciones en los requisitos del software.

Aléjate de la droga y a por el siguiente principio, el de la L.