- KISS (Keep It Simple, Stupid): Diseña soluciones simples y directas, evitando complejidades innecesarias.
- DRY (Don't Repeat Yourself): Elimina la duplicación de código y lógica, asegurando que cada funcionalidad tenga una única implementación.
- YAGNI (You Aren't Gonna Need It): No implementes funcionalidades que no sean necesarias en este momento.
- Separation of Concerns (SoC): Divide el sistema en secciones independientes, cada una con una responsabilidad específica.
- Single Responsibility Principle (SRP): Cada clase o módulo debe tener una única responsabilidad bien definida.
- Open/Closed Principle (OCP): Diseña entidades abiertas a la extensión pero cerradas a modificaciones.
- Liskov Substitution Principle (LSP): Las subclases deben sustituir a sus clases base sin alterar el comportamiento esperado.
- Interface Segregation Principle (ISP): Divide interfaces grandes en pequeñas y específicas para cada cliente.
- Dependency Inversion Principle (DIP): Los módulos deben depender de abstracciones, no de implementaciones concretas.
- Dependency Injection: Proporciona dependencias desde el exterior para reducir el acoplamiento entre módulos.
- Alta Cohesión y Bajo Acoplamiento: Los módulos deben estar bien enfocados y tener mínimas dependencias entre sí.
- Encapsulación: Oculta detalles internos y expón solo lo necesario mediante interfaces bien definidas.
- Principio de Menor Sorpresa: Diseña sistemas que se comporten de forma predecible para usuarios y desarrolladores.
- Favor Composition Over Inheritance: Usa composición de objetos en lugar de herencia para agregar funcionalidades.
- Clean Code: Escribe código claro, legible y fácil de mantener, con nombres significativos y funciones cortas.
- Código Auto-Documentado: El código debe explicarse por sí mismo sin necesidad de comentarios extensivos.
- Refactorización Continua: Mejora constantemente el diseño del código sin alterar su funcionalidad.
- Desarrollo Basado en Pruebas (TDD): Escribe pruebas antes del código funcional para garantizar el comportamiento esperado.
- Single Source of Truth (SSOT): Mantén una única fuente de información para datos o configuraciones críticas.
- Fail Fast: Detecta errores lo antes posible para evitar estados inconsistentes.