Principios #SOLID
#CodeRetreatNEA #GDCR2013
Jose A. Fernandez @fernandezja
http://about.me/fernandezja
#SOLIDifiquemos el #CodeRetreat #Corrientes
S.O.L.I.D. ¿?
Resumen
#Programación Orientada a Objetos#Dolor#Mas dolor… con Nauseas#Formación profesional#Experiencia#Compartir
Que hacemos? Que tenemos que hacer hoy?•Escribir Código, Programar? DISEÑAR•Escribir código “como homo sapiens” • Incluso generarlo…
•Problemas/inconvenientes•Escribirlo•Entenderlo (ni siquiera tocarlo)
•Mantenerlo•Trabajar con otros “homo sapiens”
Desarrollemos en Colectivo no en Bicicleta
Bueno si! Pero S.O.L.I.D.?
• Single Responsibility PrincipleResponsabilidad Única
•Open-Closed PrincipleAbierto/Cerrado
• Liskov Substitution PrincipleSubstitución de Liskov
• Interface Segregation PrincipleSegreación de Intefaz
•Dependency Inversion PrincipleInversion de Dependencia
Principio de Responsabilidad Única
• Responsabilidad?
• Cohesión y Acoplamiento…
• Que sus servicios deben estar alineados a dicha responsabilidad
• …Una razón para cambiar• Acoplar por el simple hecho que se parecen
• Como nos damos cuenta?
• Comentarios, agrupamiento
• Utilización de estado interno (agrupado)
http://blogs.msdn.com/b/cdndevs/archive/2009/07/15/the-solid-principles-explained-with-motivational-posters.aspx
Principios? Mandatorios?
•Un poco chocante?• Lineamientos• Facilitadores• Sugerencias
Principio de Abierto/Cerrado
•Nuestros artefactos de software (clases, módulos, funciones) deben estar Abiertos a la extensión, cerrado para la modificación
• Tratar de realizar por diseño• Herencia (Especificar, Generalizar)• Polimorfismo (próximo principio…)
Principio de Sustitución de Liskov
• Los subtipos deben ser sustituibles por sus tipos base
JugadorDeFutbol
Delantero MedioCampo Defensa Arquero Suplente
Segreación de Intefaz
• Establece que los clientes no deberían verse obligados a depender de los métodos que no utilizan• Pero si depender de sus abstracciones
• Separación de métodos (agrupamiento)• No por cantidad sino por utilización de clientes
Principio de Inversión de Dependencia
• Módulos de alto nivel no depender de módulos de bajo nivel
• Abstracción• En POO: Interfaces
• Preguntas• N Layers?
• Servicios?
Síntesis#Dolor
#Nauseas
#Formación profesional
#Experiencia
#Compartir
• SOLID
• Patrones de Diseño de Software
• Metodología de Desarrollo
• Desarrollemos en Colectivo no en Bicicleta
Gracias!
#SOLIDifiquemos el #CodeRetreat#Corrientes
#CodeRetreatNEA #GDCR2013
Jose A. Fernandez @fernandezja
http://about.me/fernandezja