View
33
Download
0
Embed Size (px)
Citation preview
Deconstrucción deSOLID
AUDIENCIA• Ya conozco SOLID y lo tengo en cuenta cada vez que escribo una línea
de código – Esta charla es para ti
• Sé qué es SOLID y lo voy aplicando cuando puedo – Aplica SOLID
• No tengo ni idea de qué es SOLID – Quizá esta charla no sea para ti
Al principio fue la programación
PROGRAMACIÓN ORIENTADA A OBJETOS Abstracción Encapsulamiento Herencia Cohesión Polimorfismo
S.O.L.I.D.
Los 5 principios
Single responsibility
Open-closed
Liskov substitution
Interface segregation
Dependency inversion
Single Responsibility PrincipleUna clase debe tener una, y solo una, razón para cambiar
Single Responsibility Principle
Single Responsibility Principle
PERO…• ¿Qué es una responsabilidad única exactamente?• ¿Como puedo predecir qué código puede cambiar?• ¿Tener muchas clases muy pequeñas es siempre mejor que una sola
más grande?
Open-Close PrincipleDebes ser capaz de extender el comportamiento de una clase sin necesidad de modificarla (abierto a extensión, cerrado a modificación)
Strategy Pattern
Open-Close Principle
PERO…• Cuando un requisito del sistema cambia, significa que tu código no es
válido y tienes que reemplazarlo
Liskov Substitution PrincipleLas clases derivadas, deben poder ser sustituidas por su clases base
Liskov Substitution Principle
Liskov Substitution Principle
PERO…• La composición es más fácil que la herencia• No hay una forma mejor de gastar el tiempo que escribir un gran
código que nunca va a ser usado
Interface Segregation PrincipleDesgranar las interfaces lo más fino posible,
para que sean lo más específicas posible
Interface Segregation Principle
Interface Segregation Principle
Interface Segregation Principle
PERO…• No dice nada, prácticamente cualquier cosa es mejor que un objeto
mega grande• Muchas interfaces con solo un método: ¿esto es bueno?• Quizá haya que basarse en “roles” más que en interfaces…
Dependency Inversion PrincipleDepender de las abstracciones no de las concreciones
Dependency Injection Pattern
Dependency Inversion Principle
PERO…• Generamos una dependencia: los framworks de DI• No diseñemos para reusar componentes: diseñemos para usarlos
¡¡¡Muchas Gracias!!!Drag picture to placeholder or click icon to add
Mejor usa estos 3 principios Drag picture to placeholder or click icon to add
Don’t Repeat Yourselffor(int i = 0; i< 100; i++) Console.WriteLine(“I’ll not repeat myself”);
You Ain’t Gonna Need ItTenemos que ser capaces de adaptarnos rápidamente al cambio, no preverlo
Don’t Reinvent The WheelSi ya existe, se adapta a nuestras necesidades, esta probado y funciona… ¿por qué no utilizarlo?
EN RESUMEN…Drag picture to placeholder or click icon to add
Keep It Simple, StupidSimple no es lo mismo que programar pocoEs muy difícil hacer cosas simplesSé pragmático
DEBATE
TOKIOTA, the Microsoft leading partner for innovative technology solutions, empowering our customers while taking care of our people.