Date post: | 24-May-2015 |
Category: |
Documents |
Upload: | fernando-escolar |
View: | 173 times |
Download: | 1 times |
Programación Orientada a Objetos
• Abstracción• Encapsulamiento• Herencia• Cohesión• Polimorfismo
Refactorización de código
• Código duplicado• Métodos largos• Clases largas• Atributos temporales• Código espagueti• Jerarquías de herencia
paralelas
Código que huele(Code Smells)
• Rigidez• Fragilidad• Inmovilidad• Viscosidad• Complejidad innecesaria• Repetitividad• Opacidad
SOLID
• 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
Demo
“Open-Closed 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
Demo
“Liskov Substitution Principle
Las clases derivadas, deben poder ser sustituidas por su clases base
Liskov Substitution Principle
Demo
“Interface Segregation Principle
Desgranar las interfaces lo más fino posible, para que sean lo más específicas posible
Interface Segregation Principle
“Dependency Inversion Principle
Depender de las abstracciones no de las concreciones
Dependency Injection
Demo
“Keep It Simple, Stupid!
Simple no es lo mismo que programar poco
“DRY: Don’t Repeat Yoursef
for(int i = 0; i< 100; i++) Console.WriteLine(“I’ll not repeat myself”);
“YAGNI
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?
Cuando programes: SOLID
Piensa en el objetivo de cada principio y si lo estás cumpliendo en todo momento.
Preguntas
Bibliografía