devseniorlabpython / devseniorlabpython/hardware-shop

Avanzado | (Experimental) Explorar una Arquitectura Alternativa: Diccionarios en lugar de Listas

Ouverte
#3 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Experimental
Langage dominant
Python
Étoiles
0
Forks
4
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

Este es un desafío de investigación y experimentación. Actualmente, nuestra base de datos en memoria (`_fake_db`) es una **lista de diccionarios**. Esto obliga a recorrer la lista para encontrar un producto por su ID (operación de complejidad `O(n)`).

Una alternativa podría ser usar un **diccionario de diccionarios**, donde la clave principal sea el ID del producto. Esto permitiría un acceso casi instantáneo (`O(1)`).

**Tu Misión:**

1. **Crea un Fork del Repositorio:** Para no afectar el proyecto principal, primero haz un "Fork" de este repositorio a tu propia cuenta de GitHub. Clona tu fork para trabajar en él.
2. **Refactoriza la Capa de Datos:**
* En `producto_crud.py`, cambia la estructura de `_fake_db` a un diccionario de diccionarios:
```python
# Estructura propuesta
_fake_db: Dict[int, Dict[str, Any]] = {
1: {"id": 1, "nombre": "NVIDIA RTX 4070", ...},
2: {"id": 2, "nombre": "AMD Ryzen 7 7700X", ...}
}
```
* Adapta **todos** los métodos de la clase `InMemoryProductoRepository` para que funcionen con esta nueva estructura.
* `get_by_id`: Ahora será mucho más simple. ¿Cómo accedes a un valor en un diccionario si tienes la clave?
* `get_all`: ¿Cómo obtienes todos los valores de un diccionario?
* `delete`: ¿Cómo eliminas un elemento de un diccionario por su clave?
* `create`: ¿Cómo añades un nuevo par clave-valor?

3. **Analiza y Documenta tus Hallazgos:**
* Una vez que la aplicación vuelva a funcionar, reflexiona sobre los cambios.
* Crea un archivo `ANALISIS.md` en tu fork y responde:
* ¿Qué métodos se simplificaron y por qué?
* ¿Qué métodos se complicaron o no cambiaron significativamente?
* Desde una perspectiva de rendimiento, ¿cuáles son las ventajas teóricas de esta nueva estructura?
* ¿Existe alguna desventaja en este enfoque? (Pista: piensa en el orden de los elementos).
* En conclusión, ¿recomendarías este cambio para el proyecto? Justifica tu respuesta.

**Objetivos de Aprendizaje:**

* Análisis de estructuras de datos y su impacto en el rendimiento (Complejidad Algorítmica).
* Toma de decisiones de arquitectura basadas en pros y contras.
* Flujo de trabajo con Git/GitHub (Forking).
* Habilidades de

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Read producto_crud.py and inspect every method of InMemoryProductoRepository, starting with the current _fake_db structure. Verify the application or existing checks after adapting the repository, then create ANALISIS.md covering the requested complexity, ordering trade-offs, and recommendation. Done means the dictionary-backed repository works and the analysis answers each listed question.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
database
Type d'issue
Refactorisation
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
À l'abandon
Clarté
Clairement spécifiée
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.