Este documento presenta los principios SOLID de diseño de software, los cuales incluyen: responsabilidad única, abierto/cerrado, sustitución de Liskov, segregación de interfaz e inversión de dependencias. Explica que estos principios mejoran la escalabilidad, mantenibilidad y evolución del código. También describe cómo Typescript permite aplicar completamente estos principios en JavaScript al agregar características como interfaces.
2. Objetivo
Comprender los pricipios SOLID, sus bases, su utilidad, su aplicación
real y cómo gracias a Typescript es posible aplicarlos completamente
en Javascript.
4. ¿Quién soy?
Leonardo Micheloni @leomicheloni
Electrónica / ingeniería en sistemas
Agilidad desde 2007
Arquitecto en Tokiota
+15 años
5. Disclaimer
• Visión desde mi experiencia
• No hay verdades absolutas
• I’m not an expert
@leomicheloni
6. Escenario
• Las tecnologías evolucionan
• Los conocimientos de base no cambian
• Todo conocimiento nos permite tener una mejor visión a la hora
de decidir
@leomicheloni
7. ¿Qué es SOLID?
• Una cosa que se pregunta en la entrevistas
• Es un conjunto de principios: Robert Martin
• Pensado para POO
• Para permitir mejorar:
• Escalabilidad
• Rigidez
• Matenibilidad
• Evolución
• Reutilización
• Se relaciona con la agilidad
• Alta cohesión y bajo acoplamiento
@leomicheloni
8. ¿Cuáles son los principios?
• S: Single responsability
• O: Open close
• L: Liskov sustitution
• I: Interface segregation
• D: Dependency inversion
Se encuentran por orden de importancia: Los dos últimos están en
orden inverso.
@leomicheloni
10. ¿Por qué Typescript?
• Porque los principios se basan en POO
• Si bien podemos usar algunas cosas de POO en ES6 Typescript agrega
otras que no son posibles, como interfaces.
• Además Typescript permite compilar a ES5 o ES3
@leomicheloni
12. Single responsability principle
“A class should have only a single responsibility, that is, only changes to
one part of the software's specification should be able to affect the
specification of the class”.
Robert Martin, Tom DeMarco
@leomicheloni
13. Open close principle
"Software entities ... should be open for extension, but closed for
modification."
• Classes
• Modules
• Functions
Bertrand Meyer
@leomicheloni
14. Liskov sustitution principle
"Objects in a program should be replaceable with instances of their
subtypes without altering the correctness of that program.“
Barbara Liskov
@leomicheloni