---
description: Principios básicos de diseño de software orientado a objetos.
---

# Principios de Diseño de Software

## SOLID

SOLID es un acrónimo que representa los cinco principios básicos de diseño de software orientado a objetos. Estos principios fueron introducidos por el ingeniero de software Robert C. Martin en la déc

1. **Principio de responsabilidad única (SRP):** Este principio establece que cada clase o módulo debe tener una sola responsabilidad en el sistema. Es decir, cada clase o módulo debe tener una sola razón para cambiar. Esto ayuda a garantizar que el código sea más fácil de entender, probar y mantener.
2. **Principio de abierto/cerrado (OCP):** Este principio establece que las clases o módulos deben estar abiertos para la extensión, pero cerrados para la modificación. En otras palabras, debe ser posible extender la funcionalidad de una clase o módulo sin tener que modificar su código fuente existente.
3. **Principio de sustitución de Liskov (LSP):** Las clases derivadas (subclases) deben poder usarse en lugar de las clases base (superclases) sin alterar el comportamiento correcto del programa. Esto asegura que las subclases puedan sustituir a las clases base sin problemas.\

4. **Principio de segregación de interfaces (ISP):** Este principio establece que las interfaces deben ser específicas del cliente. En otras palabras, cada cliente debe tener acceso solo a los métodos que necesita y no a métodos que no necesita.
5. **Principio de inversión de dependencia (DIP):** Este principio establece que los módulos de nivel superior no deben depender de los módulos de nivel inferior. En su lugar, ambos deben depender de abstracciones. Además, las abstracciones no deben depender de los detalles, sino los detalles deben depender de las abstracciones.

## Otros principios

1. **Don't repeat yourself (DRY):** Este principio establece que la duplicación de código debe evitarse siempre que sea posible. En lugar de repetir el mismo código en varios lugares, se debe refactorizar el código y crear una función o clase reutilizable.
2. **Keep it simple, stupid (KISS):** Este principio establece que las soluciones más simples suelen ser las mejores. En lugar de crear soluciones complejas y sofisticadas, los desarrolladores deben tratar de mantener el código simple y fácil de entender.
3. **You ain't gonna need it (YAGNI):** Este principio establece que los desarrolladores no deben agregar funcionalidad que no se necesite actualmente. En lugar de intentar anticipar futuras necesidades, se debe escribir código que satisfaga las necesidades actuales del usuario.

