← ClaudeAtlas

refactoringlisted

Guía para refactorizar código Python de forma segura y efectiva. Incluye técnicas de refactoring, detección de code smells, y mejoras.
Vasallo94/obsidian-mcp-server · ★ 7 · AI & Automation · score 74
Install: claude install-skill Vasallo94/obsidian-mcp-server
# Refactoring Skill ## Cuándo usar esta skill - Cuando detectes código duplicado. - Cuando funciones sean demasiado largas (>50 líneas). - Cuando módulos tengan demasiadas responsabilidades. - Cuando quieras mejorar la legibilidad o mantenibilidad. ## Regla de Oro > **Nunca refactorizar sin tests.** Ejecuta `uv run pytest tests/` antes y > después de cada refactoring para verificar que no rompiste nada. ## Proceso de Refactoring Seguro ### 1. Verificar estado inicial ```bash # Tests deben pasar uv run pytest tests/ -v # Sin errores de linting/tipos uv run ruff check . && uv run pyright ``` ### 2. Hacer cambio pequeño Solo UN cambio a la vez. No mezclar refactorings. ### 3. Verificar después del cambio ```bash uv run pytest tests/ -v uv run ruff check . && uv run pyright ``` ### 4. Commit si pasa ```bash git add . && git commit -m "refactor(module): descripción breve" ``` ## Code Smells Comunes ### 1. Función Larga (>50 líneas) **Problema**: Difícil de entender y testear. **Solución**: Extract Method ```python # ❌ ANTES: Función monolítica def process_vault(path: Path) -> str: # 100 líneas de código... pass # ✅ DESPUÉS: Funciones pequeñas def process_vault(path: Path) -> str: """Procesa el vault completo.""" notes = _find_notes(path) filtered = _filter_forbidden(notes) formatted = _format_results(filtered) return formatted def _find_notes(path: Path) -> List[Path]: """Busca notas en el vault.""" return list(path.rglob("*