Skip to content
SW Architecture Design
More
Share
Explore
Architectures

SOLID

SOLID:
Serie de Normas que busca que el código sea mantenible, que sea fácil de cambiar y muy extensible (agregar funciones), en resumen con un código legible y fácil de entender:
Single Responsibility → Simple and just one thing → Cada clase solo debe tener una y única responsabilidad
Open Closed → Abierta para su extensión, pero cerrada para su modificación, agregar funciones es agregar código, no modificar el actual. → Herencia y Polimorfismo → Interfaces & Abstract Clases (Python ABC)
Python reference link →
Liskov Substitution → Toda clase hija debe poder utilizarse como si fuera la padre → Uso de Interfaces (Herencia de una abstracción en Python) independientes para customizar clases hijas → herencia vs diseño por componentes
Interface Segregation → Clases pequeñas en lugar de una clase enorme
Dependency Inversion → Los modulos de alto nivel, no deberian de depender de los de bajo nivel, ambos depender de interfaces, se basa en la abstracción, los modulos deben de depender de capas abstractas, reducir el desacople entre sistemas de software → ej. cambiar de mongoDB a SQL deberia ser transparente

Principio SOLID
Hacer una sola cosa y hacer la bien
Descomponerla en partes pequeñas y dedicadas a una sola parte del sistema
Cambios de manera transparente
Implementar Interfaces para así usar solamente lo que se necesita
La comunicación entre componentes del sistema es siempre entre interfaces
El agregar las capas de software necesarias para mantener la modularidad
Continuación del Principio SOLID
Evitar las navajas suizas
Si vas a hacer un cambio tiene que se fácil y sencillo, no pasar por toda la implementación
Interacción entre el padre y el hijo no debe de tener resultados inesperados
Separar elementos por cada cliente (Business oriented) en lugar de tenerlos compartidos
Evitar trabajar con abstracciones, principio de la caja negra
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.