---
description: Avoid Code Duplication
globs: *
alwaysApply: true
---
# Filosofías de Programación Aplicadas

## DRY (Don't Repeat Yourself)
- Evitá repetir código. Si ves lógica duplicada, extraela a una función reutilizable.
- Usá módulos y componentes para evitar redundancia.

## KISS (Keep It Simple, Stupid)
- El código debe ser **directo y fácil de entender**.
- No compliques innecesariamente una solución si una más simple resuelve el problema.

## YAGNI (You Ain’t Gonna Need It)
- No escribas funciones o clases "por si acaso".
- Agregá funcionalidades **solo cuando sean realmente necesarias**.

## SOLID
- **SRP**: Cada archivo debe hacer **una sola cosa bien**.
- **OCP**: El código debe poder **extenderse sin modificarse**.
- **LSP**: Clases hijas deben poder **reemplazar a las clases padres sin romper nada**.
- **ISP**: No hagas interfaces gigantes, separalas en partes pequeñas.
- **DIP**: Usá **abstracciones** en lugar de dependencias directas.

## Boy Scout Rule
- Si tocás código viejo, **dejalo mejor de lo que lo encontraste**.
- Eliminá comentarios innecesarios y **refactorizá pequeñas partes cuando sea posible**.

## SOC (Separation of Concerns)
- Dividí el código en **capas separadas** (UI, lógica de negocio, acceso a datos).
- No mezcles responsabilidades en un mismo archivo.

## CQRS (Command Query Responsibility Segregation)
- **Separá** las operaciones de lectura de las de escritura cuando escale mejor.
- No mezcles lógica de consulta con lógica de actualización en la misma función.

