Deconstrucción de
SOLID
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 Principle
Una 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 Principle
Debes 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 Principle
Las 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 Principle
Desgranar 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 Principle
Depender 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!!!
Mejor usa estos 3 principios
Don’t Repeat Yourself
for(int i = 0; i< 100; i++)
Console.WriteLine(“I’ll not repeat myself”);
You Ain’t Gonna Need It
Tenemos que ser capaces de adaptarnos
rápidamente al cambio, no preverlo
Don’t Reinvent The Wheel
Si ya existe, se adapta a nuestras necesidades,
esta probado y funciona… ¿por qué no utilizarlo?
EN RESUMEN…
Keep It Simple, Stupid
Simple no es lo mismo que programar poco
Es muy difícil hacer cosas simples
Sé pragmático
DEBATE
TOKIOTA,
the Microsoft leading partner for innovative technology solutions,
empowering our customers while taking care of our people.

Deconstrucción de SOLID

Notas del editor

  • #2 Introducción del Framework Buenas prácticas más que reglas Propuesta inicial que se revisará con el tiempo Definir condiciones de trabajar con los clientes, que dado situaciones comunes en cualquier proyecto, se puedan aplicar soluciones “standar” Definir con los clientes modelos de trabajo abiertos Parámetros que afectan a los cambios que se producen en el tiempo de ejecución Educar a los clientes para que se involucren en el desarrolo, validación y pruebas En este momento el framework se aplica a proyectos de desarrollo de software Evitar caer en trampas de compromiso sobre proyectos en los que no hay definición. Crear una guía mínima de definición: Funcionalmente y desde el punto de vista del cliente, qué es lo que quiere y para qué Implicación por parte del cliente: key users (quién tiene que definir, quién va a validar, quién va a proveer la infraestructura, herramientas...) Enviar propuestas a Iciar (muy mal y muy bien)