devseniorlabpython / devseniorlabpython/hardware-shop

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

未关闭
#3 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
Experimental
主要语言
Python
星标
0
派生
4
PR 合并指标
30 天内没有已合并 PR

描述

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

贡献指南

这个仓库没有索引到贡献指南

调研方向

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.

由索引模型根据 Issue 内容生成。

评估

技术栈
python
领域
database
Issue 类型
重构
难度
5/5
预计耗时
一周以上
活跃度
停滞
描述清晰度
描述清楚
新手友好度
35/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。