Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.
SOLID design principles
En el inicio...
El software
cambia
Rigido
cambios en cascada
Fragil
elementos no
relacionados se
rompen al hacer
un cambio
Inamovible
poca reutilización
copy-paste
Pringoso
es dificil entender
el diseño inicial
abres, cierras y
bye
SOLID no todo son principios
SOLID = gestión dependencias
las dependencias te matan
diseño te salva
Que son dependencias?
framework
var cutomer = new Customer()
web services
BD
Hipótesis
http://martinfowler.com/bliki/DesignStaminaHypothesis.html
€
Si el proyecto sigue vivo,
te costará más dinero
SOLID
Michael Feathers for the
"First five principles"
Robert C Martin SOLID
http://social.technet.microsoft.com/wiki/cont...
Single responsability
Open/closed
Liskov substitution
Interface segregation
Dependency Inversion
Single Responsability
"A class should have only one reason to change. "
http://social.technet.microsoft.com/wiki/contents/...
Open - Closed
"Open for extension, closed for modification"
Liskov substitution
"Derived classes must be able to substitute for their base classes"
Child class must not remove base c...
Interface segregation
"many client-specific interfaces are better than one general-purpose interface."
http://social.techn...
Dependency Inversion
"High level modules should not depend upon low level modules,
rather both should depend upon abstract...
OCP = Objetivo
SRP + DIP = estrategias de código
LSP= formula confusa
ISP = No parece tener aplicación
Al final todo va de gestión de dependencias
El diseño va de dependencias
Si haces referencia a algo ----> dependes de
ello
Si tu dependencia cambia ----> tu debes cam...
para evitar dependencias
loosely coupled - DIP
highly cohesive - SRP
easily composable - dependencias
context independent ...
código independencia
Single responsability
Dependency Inversion
Open/closed
Liskov substitution - > subclases
Interface se...
código!
Inversion de dependencias
UI
Business Logic
Data access
Inversion de dependencias
UI
Business Logic
Data access
Resistencia
code smell
abraza el problema, y arreglalo
test depende de ---> tu código
TDD se hace complicado si no hay diseño
autoexamen
existe repetición?
tiene una responsabilidad?
cambia todo al mismo ritmo?
depende de cosas que cambian poco?
Fin
Próxima SlideShare
Cargando en…5
×

Principios SOLID para el diseño orientado a objetos

1.796 visualizaciones

Publicado el

Diapositivas utilizadas en la conferencia online sobre Principios SOLID para el diseño orientado a objetos.

Publicado en: Tecnología
  • Sé el primero en comentar

Principios SOLID para el diseño orientado a objetos

  1. 1. SOLID design principles
  2. 2. En el inicio...
  3. 3. El software cambia
  4. 4. Rigido cambios en cascada
  5. 5. Fragil elementos no relacionados se rompen al hacer un cambio
  6. 6. Inamovible poca reutilización copy-paste
  7. 7. Pringoso es dificil entender el diseño inicial abres, cierras y bye
  8. 8. SOLID no todo son principios
  9. 9. SOLID = gestión dependencias las dependencias te matan diseño te salva
  10. 10. Que son dependencias? framework var cutomer = new Customer() web services BD
  11. 11. Hipótesis http://martinfowler.com/bliki/DesignStaminaHypothesis.html
  12. 12. € Si el proyecto sigue vivo, te costará más dinero
  13. 13. SOLID Michael Feathers for the "First five principles" Robert C Martin SOLID http://social.technet.microsoft.com/wiki/contents/articles/18033.software-design-principles.aspx
  14. 14. Single responsability Open/closed Liskov substitution Interface segregation Dependency Inversion
  15. 15. Single Responsability "A class should have only one reason to change. " http://social.technet.microsoft.com/wiki/contents/articles/18061.single-responsibility-principle.aspx
  16. 16. Open - Closed "Open for extension, closed for modification"
  17. 17. Liskov substitution "Derived classes must be able to substitute for their base classes" Child class must not remove base class behavior
  18. 18. Interface segregation "many client-specific interfaces are better than one general-purpose interface." http://social.technet.microsoft.com/wiki/contents/articles/18061.single-responsibility-principle.aspx
  19. 19. Dependency Inversion "High level modules should not depend upon low level modules, rather both should depend upon abstractions" http://social.technet.microsoft.com/wiki/contents/articles/18061.single-responsibility-principle.aspx
  20. 20. OCP = Objetivo SRP + DIP = estrategias de código LSP= formula confusa ISP = No parece tener aplicación
  21. 21. Al final todo va de gestión de dependencias
  22. 22. El diseño va de dependencias Si haces referencia a algo ----> dependes de ello Si tu dependencia cambia ----> tu debes cambiar
  23. 23. para evitar dependencias loosely coupled - DIP highly cohesive - SRP easily composable - dependencias context independent - dependencias http://www.growing-object-oriented-software.com/
  24. 24. código independencia Single responsability Dependency Inversion Open/closed Liskov substitution - > subclases Interface segregation -> static languages http://www.growing-object-oriented-software.com/
  25. 25. código!
  26. 26. Inversion de dependencias UI Business Logic Data access
  27. 27. Inversion de dependencias UI Business Logic Data access
  28. 28. Resistencia code smell abraza el problema, y arreglalo
  29. 29. test depende de ---> tu código TDD se hace complicado si no hay diseño
  30. 30. autoexamen existe repetición? tiene una responsabilidad? cambia todo al mismo ritmo? depende de cosas que cambian poco?
  31. 31. Fin

×