solid para catdotnet

43
SOLID Los principios básicos de la OOP @fernandoescolar [email protected]

Upload: fernando-escolar

Post on 24-May-2015

176 views

Category:

Documents


1 download

DESCRIPTION

Principios básicos de la programación y calidad.

TRANSCRIPT

Page 1: SOLID   para CatDotNet

SOLIDLos principios básicos de la

OOP

@fernandoescolar [email protected]

Page 2: SOLID   para CatDotNet

Programación Orientada a Objetos

• Abstracción• Encapsulamiento• Herencia• Cohesión• Polimorfismo

Page 3: SOLID   para CatDotNet
Page 4: SOLID   para CatDotNet

Refactorización de código

• Código duplicado• Métodos largos• Clases largas• Atributos temporales• Código espagueti• Jerarquías de herencia

paralelas

Page 5: SOLID   para CatDotNet
Page 6: SOLID   para CatDotNet

Código que huele(Code Smells)

• Rigidez• Fragilidad• Inmovilidad• Viscosidad• Complejidad innecesaria• Repetitividad• Opacidad

Page 7: SOLID   para CatDotNet
Page 8: SOLID   para CatDotNet
Page 9: SOLID   para CatDotNet

SOLID

• Single responsibility• Open-closed• Liskov substitution• Interface segregation• Dependency inversion

Page 10: SOLID   para CatDotNet
Page 11: SOLID   para CatDotNet

“Single Responsibility Principle

Una clase debe tener una, y solo una, razón para cambiar

Page 12: SOLID   para CatDotNet

Single Responsibility Principle

Page 13: SOLID   para CatDotNet

Demo

Page 14: SOLID   para CatDotNet
Page 15: SOLID   para CatDotNet

“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)

Page 16: SOLID   para CatDotNet

Strategy Pattern

Page 17: SOLID   para CatDotNet

Demo

Page 18: SOLID   para CatDotNet
Page 19: SOLID   para CatDotNet

“Liskov Substitution Principle

Las clases derivadas, deben poder ser sustituidas por su clases base

Page 20: SOLID   para CatDotNet

Liskov Substitution Principle

Page 22: SOLID   para CatDotNet
Page 23: SOLID   para CatDotNet

“Interface Segregation Principle

Desgranar las interfaces lo más fino posible, para que sean lo más específicas posible

Page 24: SOLID   para CatDotNet

Interface Segregation Principle

Page 27: SOLID   para CatDotNet
Page 28: SOLID   para CatDotNet

“Dependency Inversion Principle

Depender de las abstracciones no de las concreciones

Page 29: SOLID   para CatDotNet

Dependency Injection

Page 30: SOLID   para CatDotNet

Demo

Page 31: SOLID   para CatDotNet
Page 32: SOLID   para CatDotNet
Page 33: SOLID   para CatDotNet

“Keep It Simple, Stupid!

Simple no es lo mismo que programar poco

Page 34: SOLID   para CatDotNet
Page 35: SOLID   para CatDotNet

“DRY: Don’t Repeat Yoursef

for(int i = 0; i< 100; i++) Console.WriteLine(“I’ll not repeat myself”);

Page 36: SOLID   para CatDotNet
Page 37: SOLID   para CatDotNet

“YAGNI

Tenemos que ser capaces de adaptarnos rápidamente al cambio, no preverlo

Page 38: SOLID   para CatDotNet
Page 39: SOLID   para CatDotNet

“Don’t reinvent the wheel

Si ya existe, se adapta a nuestras necesidades, esta probado y funciona… ¿por qué no utilizarlo?

Page 40: SOLID   para CatDotNet

Cuando programes: SOLID

Piensa en el objetivo de cada principio y si lo estás cumpliendo en todo momento.

Page 41: SOLID   para CatDotNet

Preguntas

Page 42: SOLID   para CatDotNet

Bibliografía

Page 43: SOLID   para CatDotNet

¡Muchas gracias!

@fernandoescolar [email protected]