principios solid para el diseño orientado a objetos

31
SOLID design principles

Upload: netmind

Post on 17-Dec-2014

374 views

Category:

Technology


3 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Principios SOLID para el diseño orientado a objetos

SOLID design principles

Page 2: Principios SOLID para el diseño orientado a objetos

En el inicio...

Page 3: Principios SOLID para el diseño orientado a objetos

El software

cambia

Page 4: Principios SOLID para el diseño orientado a objetos

Rigido

cambios en cascada

Page 5: Principios SOLID para el diseño orientado a objetos

Fragil

elementos no

relacionados se

rompen al hacer

un cambio

Page 6: Principios SOLID para el diseño orientado a objetos

Inamovible

poca reutilización

copy-paste

Page 7: Principios SOLID para el diseño orientado a objetos

Pringoso

es dificil entender

el diseño inicial

abres, cierras y

bye

Page 8: Principios SOLID para el diseño orientado a objetos

SOLID no todo son principios

Page 9: Principios SOLID para el diseño orientado a objetos

SOLID = gestión dependencias

las dependencias te matan

diseño te salva

Page 10: Principios SOLID para el diseño orientado a objetos

Que son dependencias?

framework

var cutomer = new Customer()

web services

BD

Page 11: Principios SOLID para el diseño orientado a objetos

Hipótesis

http://martinfowler.com/bliki/DesignStaminaHypothesis.html

Page 12: Principios SOLID para el diseño orientado a objetos

Si el proyecto sigue vivo,

te costará más dinero

Page 13: Principios SOLID para el diseño orientado a objetos

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

Page 14: Principios SOLID para el diseño orientado a objetos

Single responsability

Open/closed

Liskov substitution

Interface segregation

Dependency Inversion

Page 15: Principios SOLID para el diseño orientado a objetos

Single Responsability

"A class should have only one reason to change. " http://social.technet.microsoft.com/wiki/contents/articles/18061.single-responsibility-principle.aspx

Page 16: Principios SOLID para el diseño orientado a objetos

Open - Closed

"Open for extension, closed for modification"

Page 17: Principios SOLID para el diseño orientado a objetos

Liskov substitution

"Derived classes must be able to substitute for their base classes" Child class must not remove base class behavior

Page 18: Principios SOLID para el diseño orientado a objetos

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

Page 19: Principios SOLID para el diseño orientado a objetos

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

Page 20: Principios SOLID para el diseño orientado a objetos

OCP = Objetivo

SRP + DIP = estrategias de código

LSP= formula confusa

ISP = No parece tener aplicación

Page 21: Principios SOLID para el diseño orientado a objetos

Al final todo va de gestión de dependencias

Page 22: Principios SOLID para el diseño orientado a objetos

El diseño va de dependencias

Si haces referencia a algo ----> dependes de

ello

Si tu dependencia cambia ----> tu debes cambiar

Page 23: Principios SOLID para el diseño orientado a objetos

para evitar dependencias

loosely coupled - DIP

highly cohesive - SRP

easily composable - dependencias

context independent - dependencias

http://www.growing-object-oriented-software.com/

Page 24: Principios SOLID para el diseño orientado a objetos

código independencia

Single responsability

Dependency Inversion

Open/closed

Liskov substitution - > subclases

Interface segregation -> static languages

http://www.growing-object-oriented-software.com/

Page 25: Principios SOLID para el diseño orientado a objetos

código!

Page 26: Principios SOLID para el diseño orientado a objetos

Inversion de dependencias

UI

Business Logic

Data access

Page 27: Principios SOLID para el diseño orientado a objetos

Inversion de dependencias

UI

Business Logic

Data access

Page 28: Principios SOLID para el diseño orientado a objetos

Resistencia

code smell

abraza el problema, y arreglalo

Page 29: Principios SOLID para el diseño orientado a objetos

test depende de ---> tu código

TDD se hace complicado si no hay diseño

Page 30: Principios SOLID para el diseño orientado a objetos

autoexamen

existe repetición?

tiene una responsabilidad?

cambia todo al mismo ritmo?

depende de cosas que cambian poco?

Page 31: Principios SOLID para el diseño orientado a objetos

Fin