No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

¿Qué son los principios SOLID?

4/16
Recursos

¿Qué son los principios SOLID?

Los principios SOLID son un conjunto de directrices que mejoran el diseño de software, especialmente en la programación orientada a objetos. Estos principios buscan crear código más comprensible, escalable y fácil de mantener. Fue Robert Martin quien reunió estas conceptos en su libro "Clean Code". A continuación, profundizaremos en los cinco principios que componen SOLID.

¿Qué representa cada letra de SOLID?

Principio de responsabilidad única (Single Responsibility Principle)

Este principio establece que cada componente de un sistema debe tener una única responsabilidad o propósito. Al asignar una responsabilidad específica a cada componente, se reduce la complejidad y se facilita el mantenimiento del sistema.

Principio abierto/cerrado (Open/Close Principle)

Se refiere a que el código debe estar abierto para la extensión, pero cerrado para la modificación. Esto significa que un módulo debe poder extenderse para incorporar nuevas funcionalidades sin cambiar el código existente, lo que permite que el sistema crezca de manera ordenada y segura.

Principio de sustitución de Liskov (Liskov Substitution Principle)

Este principio sostiene que los objetos de un programa deben ser reemplazables por instancias de sus subtipos sin alterar el funcionamiento del programa. Esto asegura que cualquier clase derivada pueda ser sustituida por su clase base.

Principio de segregación de interfaces (Interface Segregation Principle)

Promueve la creación de interfaces específicas para cada función del sistema en lugar de una interfaz general. Esta segregación permite a los desarrolladores definir interfaces más especializadas, lo que reduce el acoplamiento y mejora la cohesión dentro del código.

Principio de inversión de la dependencia (Dependency Inversion Principle)

Este principio enfatiza en que las dependencias de un sistema deben estar invertidas, es decir, los módulos de alto nivel no deben depender de módulos de bajo nivel. Ambos deben depender de abstracciones. Este enfoque se traduce frecuentemente en la implementación de la inyección de dependencias, disminuyendo el acoplamiento y favoreciendo la flexibilidad del código.

¿Por qué aplicar SOLID desde el inicio de un proyecto?

Implementar SOLID desde el comienzo establece una base sólida para el desarrollo, lo que facilita un sistema escalable y reutilizable. Al adherirnos a estos principios, reducimos la deuda técnica, es decir, los problemas futuros que surgen de una mala implementación inicial. Además, establecemos un estándar claro de buenas prácticas que mejora la colaboración entre desarrolladores.

¿Cómo ayuda SOLID en el desarrollo bajo metodología TDD?

Los principios SOLID son un aliado en el desarrollo guiado por pruebas (Test-Driven Development o TDD). Esta metodología invierte el flujo típico de creación de software al escribir pruebas antes de implementar el código. SOLID facilita esta metodología asegurando que nuestro código sea modular y testeable, y ayuda a garantizar que se cumplan los criterios de funcionalidad antes de implementar diferentes partes del sistema.

¿Cuál es la relación entre SOLID y el paradigma de programación orientada a objetos?

SOLID es particularmente relevante para lenguajes que soportan la programación orientada a objetos, como Java, C++, y C#. Si bien puede ser desafiante aplicar SOLID en lenguajes más funcionales, estos principios siguen siendo un referente valioso para cualquier desarrollo de software que busque buenas prácticas.

Invitamos a todos a participar y compartir sus experiencias con SOLID en la comunidad. ¿Has trabajado con estos principios? ¿Te han preguntado alguna vez sobre ellos en una entrevista? ¡Comparte tus ideas y enriquece el aprendizaje colectivo!

Aportes 19

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

S. Single responsibility principle-Principio de responsabilidad única.

Debemos asignar una única responsabilidad a cada uno de los componentes.

O. Open/closed principle- Principio de abierto/cerrado.

El código debe estar abierto a extensiones y cerrado a cambios.

L. Liskov substitution principle-Principio de sustitución de Liskov.

Relación entre tipos y subtipos dentro del sistema.

I. Interface segregation principle- Principio de segregación de la interfaz

Ayuda a asignar una responsabilidad específica a cada una de las interfaces que tiene el sistema.

D. Dependency inversion principle- Principio de inversión de la dependencia.

Inyección de dependencias y el evitar el acoplamiento.

S.O.L.I.D
S = Sigle responsibility principle - Principio de responsabilidad única.
O = Open/closed principle - Principio abierto-cerrado.
L = Liskov substitution principle - Principio de sustitución de Liskov.
I = Interface segregation principle - Principio de segregación de interfaz.
D = Dependency inversion principle -Principio de inversión de dependencia.

en una entrevista una vez me preguntaron sobre los pilares de la POO

Principios SOLID Explicados por Chat GPT

Los principios SOLID son un conjunto de cinco principios que se aplican a la programación orientada a objetos. Fueron propuestos por Robert C. Martin como una guía para ayudar a los desarrolladores de software a escribir código más claro, fácil de mantener y extensible.

Estos son los principios SOLID:
}

Principio de Responsabilidad Única (SRP): Este principio establece que una clase o módulo debería tener una única responsabilidad, es decir, que solo debería tener una razón para cambiar. Esto ayuda a que el código sea más fácil de entender, probar y mantener.

Principio de Abierto/Cerrado (OCP): Este principio establece que una clase o módulo debería estar abierto a la extensión pero cerrado a la modificación. Esto significa que debería ser posible agregar nuevas funcionalidades sin tener que modificar el código existente.

Principio de Sustitución de Liskov (LSP): Este principio establece que una subclase debería ser capaz de ser sustituida por su clase base sin afectar el comportamiento del programa. Esto ayuda a asegurar la coherencia en el comportamiento de las clases.

Principio de Segregación de Interfaz (ISP): Este principio establece que una interfaz debería ser específica para un cliente en particular y no debería incluir métodos que el cliente no necesita. Esto ayuda a reducir la complejidad y aumentar la cohesión de las clases.

Principio de Inversión de Dependencia (DIP): Este principio establece que los módulos de alto nivel no deberían depender de los módulos de bajo nivel, sino de abstracciones. Esto ayuda a reducir la dependencia entre los componentes del sistema y facilita el reemplazo de componentes individuales.

En resumen, los principios SOLID son una guía para escribir código orientado a objetos de alta calidad, que es fácil de entender, mantener y extender. Siguiendo estos principios, los desarrolladores pueden crear sistemas más robustos, flexibles y fáciles de adaptar a medida que cambian los requisitos del negocio.

En varias de las entrevistas de trabajo que he tenido, es una pregunta muy recurrente, ya que de ella parten las bases que se tengan de buenas prácticas

Otra pregunta que me hicieron en una entrevista un equipo de developers rusos phperos, fue sobre los modificadores de acceso:

Características de SOLID

  • Orientado al paradigma de orientación a objetos (POO)

  • Se le atribuye a Robert C. Martin

  • Diseño y refactorización de código

  • Se debe implementar desde el inicio del proyecto cuando se crean los componentes.

SOLID Ayuda a:

  • Lograr código escalable

  • Evitar deuda técnica (Technical debt)

  • Plantear los fundamentos para el desarrollo guiado por pruebas (TDD)

  • Tener un estándar claro en cada uno de los proyectos de un portafolio

Solid y algunos ejemplos en Java:
Introduction to SOLID Design Principles for Java Developers

En lo personal si he tenido que aplicar los principios SOLID en proyectos personales, pero el que se me complica mucho de aplicar es el Interface Segregation principle. En cuanto a Dependency inversion principle lo he aplicado muchos en proyectos .NET, y me encanta por el desacoplamiento que brinda y es va genial para escribir test desde mi punto de vista.

Los patrones de diseño son el reflejo de la aplicación de buenas prácticas como solid, en particular podría mencionar que el patrón de adaptador es genial para integrar librerías de terceros, logrando extender la funcionalidad de la lógica del negocio con un bajo acoplamiento.

En lo personal, he utilizado mucho el principio de responsabilidad unica, sin saber que hacia parte de este conjunto de principios. La idea de tomar este curso es formalizar lo que vengo trabajando en mi dia a dia y aprender lo complementario para ir creciendo en mi carrera

Una vez me preguntaron sobre los principios SOLID en una entrevista, si bien siempre los aplico en el desarrollo, no supe explicarlos y me corcharon :p
## Principios SOLID en C#: Guía rápida Los **principios SOLID** son un conjunto de cinco principios de diseño de software que ayudan a escribir código C# más **robusto, flexible y mantenible**. Son: **1. SRP (Single Responsibility Principle):** Cada clase debe tener una única responsabilidad. **2. OCP (Open/Closed Principle):** Las clases y módulos deben estar abiertos para la extensión, pero cerrados para la modificación. **3. LSP (Liskov Substitution Principle):** Las subclases deben ser sustituibles por sus clases base sin cambiar el comportamiento del programa. **4. ISP (Interface Segregation Principle):** Las interfaces deben ser pequeñas y específicas, definiendo solo las responsabilidades que necesitan. **5. DIP (Dependency Inversion Principle):** Las dependencias deben inyectarse en lugar de ser creadas por las clases que las necesitan. **Beneficios de usar los principios SOLID:** * **Mejora la calidad del código:** Reduce la complejidad, aumenta la flexibilidad y facilita el mantenimiento. * **Facilita la refactorización:** Permite modificar el código sin afectar a otras partes del sistema. * **Mejora la testabilidad:** Permite escribir pruebas unitarias más efectivas. **Ejemplos de aplicación en C#:** * **SRP:** Usar interfaces para definir responsabilidades específicas. * **OCP:** Usar clases abstractas y métodos virtuales para permitir la extensión. * **LSP:** Asegurar que las subclases implementen correctamente el comportamiento de la clase base. * **ISP:** Dividir interfaces grandes en interfaces más pequeñas y específicas. * **DIP:** Usar inyección de dependencias para crear dependencias.

Las mejores ofertas laborales piden concimientos/experiencia en los principios SOLID.

Yo para ser honesto quiero aprender aplicarlo por los nuevos proyectos que he escuchado que eso preguntan en las entrevistas

A que se refiere con "lenguajes mas funcionales"? (3:13)
Es cierto, Soy Java developer y en todas las entrevistas que tuve en mi búsqueda de trabajo en el 2023 me preguntaban si conocía los principios SOLID o si podía dar un ejemplo de como los aplico en mi día a día.
En un día cotidiano utilizo SOLID. En todas las entrevistas de trabajo que me han realizado he podido evidenciar la importancia de saber dominar el tema ya que es indistinto del lenguaje de programación.

Definicion de principios SOLID