SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Principios de diseño
SOLID
Manuel Zapata
CaliJS – Octubre 2018
Hola, soy Manuel.
Desarrollador y arquitecto de software.
Co-organizador de Xamarin Cali.
Blogger y YouTuber.
Educador por pasión.
Website: https://manuelzapata.co
Mis redes
SoyManuelZapata
@ManuelZapata
ManuelZapata
Les presento al tío Bob
Principio de
única
responsabilidad
Single
responsability
principle (SRP)
Un módulo debería tener una y
solo una razón para cambiar
Veamos algo de código.
Principio de
abierto cerrado
Open Closed
Principle (OCP)
Un módulo debería estar
cerrado a modificaciones y
abierto a extensiones
Veamos algo de código.
Principio de
sustitución de
Liskov
Liskov Substitution
Principle (LSP)
Hijo de tigre sale pintado
Debería ser posible sustituir
una clase padre con una clase
hija, sin que hayan
comportamientos no deseados.
ProgramaClasePadre
ClaseHija
Principio de
segregación de
interfaces
Interface
Segregation
Principle (ISP)
Los clientes no deberían
depender de métodos que
no utilicen.
UsuarioUno UsuarioDos UsuarioTres
Principal
+ métodoUno
+ métodoDos
+ métodoTres
UsuarioUno UsuarioDos UsuarioTres
PrincipalDos
+ métodoDos
PrincipalUno
+ métodoUno
PrincipalTres
+ métodoTres
Pero JavaScript no tiene interfaces
Pero Flow y TypeScript, sí.
No dependas de lo que no
necesites.
Principio de
inversión de
dependencias
Dependency
Inversion Principle
(DIP)
Los módulos de alto nivel no
deberían depender de los
módulos de bajo nivel.
Primera idea
Las abstracciones no
deberían depender de los
detalles
Segunda idea
Inyección de dependencias
Design smells
• Rigidez.
• Fragilidad.
• Viscosidad.
• Complejidad innecesaria.
• Repetición innecesaria.
• Opacidad.
https://youtu.be/k9nvQemH9f4
https://manuelzapata.co/p
rin
Mini curso de principios de diseño
Si quieres aprender más de diseño y
arquitectura de software…
SoyManuelZapata
@ManuelZapata
ManuelZapata
Muchas gracias.

Weitere ähnliche Inhalte

Was ist angesagt?

Plan de gestion_de_proyecto_-_ejemplo
Plan de gestion_de_proyecto_-_ejemploPlan de gestion_de_proyecto_-_ejemplo
Plan de gestion_de_proyecto_-_ejemplo
Marco Minaya Cajjak
 

Was ist angesagt? (20)

Introducción a los Frameworks PHP
Introducción a los Frameworks PHP  Introducción a los Frameworks PHP
Introducción a los Frameworks PHP
 
Caracteristicas rup
Caracteristicas rupCaracteristicas rup
Caracteristicas rup
 
MVC
MVCMVC
MVC
 
Gestión de las Adquisiciones, PMBOOK.
Gestión de las Adquisiciones, PMBOOK.Gestión de las Adquisiciones, PMBOOK.
Gestión de las Adquisiciones, PMBOOK.
 
Intro to DevOps
Intro to DevOpsIntro to DevOps
Intro to DevOps
 
Patrones diseño de software
Patrones diseño de softwarePatrones diseño de software
Patrones diseño de software
 
Unidad 1. caracterizacion de los sistemas distribuidos
Unidad 1.  caracterizacion de los sistemas distribuidosUnidad 1.  caracterizacion de los sistemas distribuidos
Unidad 1. caracterizacion de los sistemas distribuidos
 
Introduction to DevOps Tools | DevOps Training | DevOps Tutorial for Beginner...
Introduction to DevOps Tools | DevOps Training | DevOps Tutorial for Beginner...Introduction to DevOps Tools | DevOps Training | DevOps Tutorial for Beginner...
Introduction to DevOps Tools | DevOps Training | DevOps Tutorial for Beginner...
 
Análisis de arquitecturas de software
Análisis de arquitecturas de softwareAnálisis de arquitecturas de software
Análisis de arquitecturas de software
 
Grupo de procesos de monitoreo y control
Grupo de procesos de monitoreo y controlGrupo de procesos de monitoreo y control
Grupo de procesos de monitoreo y control
 
Conceptos básicos de gestión de proyectos
Conceptos básicos de gestión de proyectosConceptos básicos de gestión de proyectos
Conceptos básicos de gestión de proyectos
 
RUTA CRÍTICA
RUTA CRÍTICARUTA CRÍTICA
RUTA CRÍTICA
 
Software Development Team
Software Development TeamSoftware Development Team
Software Development Team
 
DevOps cultura y herramientas
DevOps cultura y herramientasDevOps cultura y herramientas
DevOps cultura y herramientas
 
Calidad Del Producto Software
Calidad Del Producto SoftwareCalidad Del Producto Software
Calidad Del Producto Software
 
1. uml
1. uml1. uml
1. uml
 
4ta Generacion
4ta Generacion4ta Generacion
4ta Generacion
 
Plan de gestion_de_proyecto_-_ejemplo
Plan de gestion_de_proyecto_-_ejemploPlan de gestion_de_proyecto_-_ejemplo
Plan de gestion_de_proyecto_-_ejemplo
 
2. procesos de la direccion de proyectos
2. procesos de la direccion de proyectos2. procesos de la direccion de proyectos
2. procesos de la direccion de proyectos
 
DevSecOps
DevSecOpsDevSecOps
DevSecOps
 

Ähnlich wie Principios de diseño SOLID

.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup
 
Principios SOLID de Diseño Orientado a Objetos
Principios SOLID de Diseño Orientado a ObjetosPrincipios SOLID de Diseño Orientado a Objetos
Principios SOLID de Diseño Orientado a Objetos
Jose E. Rodriguez Huerta
 

Ähnlich wie Principios de diseño SOLID (18)

SOLID - ¿Cómo lo aplico a mi código?
SOLID - ¿Cómo lo aplico a mi código?SOLID - ¿Cómo lo aplico a mi código?
SOLID - ¿Cómo lo aplico a mi código?
 
Deconstrucción de SOLID
Deconstrucción de SOLIDDeconstrucción de SOLID
Deconstrucción de SOLID
 
Developing for Android (The movie)
Developing for Android (The movie)Developing for Android (The movie)
Developing for Android (The movie)
 
SOLID para CatDotNet
SOLID   para CatDotNetSOLID   para CatDotNet
SOLID para CatDotNet
 
Spring Inyección De Dependencias
Spring Inyección De DependenciasSpring Inyección De Dependencias
Spring Inyección De Dependencias
 
Principios S.O.L.I.D. en Sistemas de Información Distribuidos
Principios S.O.L.I.D. en Sistemas de Información DistribuidosPrincipios S.O.L.I.D. en Sistemas de Información Distribuidos
Principios S.O.L.I.D. en Sistemas de Información Distribuidos
 
Presentación open closed principle
Presentación open closed principlePresentación open closed principle
Presentación open closed principle
 
Magia con Drupal
Magia con DrupalMagia con Drupal
Magia con Drupal
 
Clean code 10-11
Clean code 10-11Clean code 10-11
Clean code 10-11
 
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
 
Como implementar MVP sin morir en el intento
Como implementar MVP sin morir en el intentoComo implementar MVP sin morir en el intento
Como implementar MVP sin morir en el intento
 
Bootcamp Javascript Online
Bootcamp Javascript OnlineBootcamp Javascript Online
Bootcamp Javascript Online
 
SEO para Drupal
SEO para DrupalSEO para Drupal
SEO para Drupal
 
PSD to HTML (Drupal) - Drupal Day Spain 2017 Cáceres
PSD to HTML (Drupal) - Drupal Day Spain 2017 CáceresPSD to HTML (Drupal) - Drupal Day Spain 2017 Cáceres
PSD to HTML (Drupal) - Drupal Day Spain 2017 Cáceres
 
Taller SOLID Refactor
Taller SOLID RefactorTaller SOLID Refactor
Taller SOLID Refactor
 
Prueba Corta: Video -Vida Real-Definicion de objetos, estado, comportamiento ...
Prueba Corta: Video -Vida Real-Definicion de objetos, estado, comportamiento ...Prueba Corta: Video -Vida Real-Definicion de objetos, estado, comportamiento ...
Prueba Corta: Video -Vida Real-Definicion de objetos, estado, comportamiento ...
 
Prueba Corta: Video -Vida Real-Definicion de objetos, estado, comportamiento ...
Prueba Corta: Video -Vida Real-Definicion de objetos, estado, comportamiento ...Prueba Corta: Video -Vida Real-Definicion de objetos, estado, comportamiento ...
Prueba Corta: Video -Vida Real-Definicion de objetos, estado, comportamiento ...
 
Principios SOLID de Diseño Orientado a Objetos
Principios SOLID de Diseño Orientado a ObjetosPrincipios SOLID de Diseño Orientado a Objetos
Principios SOLID de Diseño Orientado a Objetos
 

Kürzlich hochgeladen

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
241521559
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
silviayucra2
 

Kürzlich hochgeladen (10)

pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 

Principios de diseño SOLID

Hinweis der Redaktion

  1. Módulo más malinterpretado. Un módulo debería tener una, y solo una, razón para cambiar.  NO significa que debería hacer una sola cosa. Más difícil reusar. Dificultad de mantenimiento.
  2. Un artefacto software debería estar abierto para ser extendido, pero cerrado para ser modificado.   Es un elemento crucial detrás de la arquitectura de muchos sistemas.   El objetivo es hacer el sistema fácil de extender sin que los cambios sean de alto impacto.   Esta extensión no solo se hace a través de herencia, sino que también se puede lograr mediante patrones de diseño.
  3. Va mucho más allá de la herencia.   Existencia herencia no significa que el principio se cumpla.   También aplica a otras cosas que no son herencia. Servicios REST mismas firmas de métodos.
  4. No necesariamente hablamos de interfaces. También hablamos de clases base, protocolos o incluso firmas de métodos.
  5. Por ejemplo, métodos con muchos parámetros.
  6. Deberían depender de abstracciones.
  7. Primer mal olor: rigidez   La aplicación es difícil de cambiar, incluso para cosas muy pequeñas.   El diseño es dificil de cambiar.   Segundo mal olor: fragilidad   La tendencia de un programa de dañarse en múltiples sitios, cuando un único cambio se hace.   El diseño se daña muy fácil.   Tercer mal olor: inmovilidad   Es muy difícil separar el sistema en componentes que puedan ser reusados en otros sistemas.   El diseño es difícil de reusar.   Cuarto mal olor: viscosidad   Los cambios que preservan el diseño son más difíciles de hacer que los machetes.   Hacer las cosas mal es más fácil que hacer las cosas bien.   Quinto olor: complejidad innecesaria   El diseño es más complejo de lo necesario.   Hay un exceso de diseño   Sexto olor: repetición innecesaria   Hay estructuras que se repiten.   En mi último video hablé bastante sobre copiar y pegar.   Séptimo olor: opacidad   Código escrito de manera clara y expresiva   VS   Código escrito de manera extraña y confusa.