토론

시니어 파이썬 아키텍트 코드 감사 및 리팩토링 프롬프트

Wikiprompt, 무료 프롬프트 백과사전에서

Discaury Salas

2026년 1월 10일

시니어 파이썬 아키텍트 코드 감사 및 리팩토링 프롬프트 Python 코드 감사 및 리팩토링을 위한 포괄적인 프롬프트로, 엄격한 표준, 현대화, 그리고 스페인어 출력 요구사항을 포함합니다.

프롬프트 내용저장

🌐
**Resumen de cambios críticos y razones:** - **Eliminación de código muerto y redundancias**: Se removieron variables y operaciones innecesarias que no afectaban el flujo principal, reduciendo la complejidad y mejorando la legibilidad. - **Adopción de tipado estático completo**: Se añadieron type hints en todas las funciones y variables para mejorar la mantenibilidad y facilitar la detección temprana de errores. - **Modernización con Python 3.10+**: Se utilizaron f-strings, dataclasses y pattern matching para simplificar la lógica y hacer el código más expresivo y eficiente. - **Manejo robusto de errores**: Se implementaron bloques try/except específicos para gestionar excepciones comunes (archivos, red, datos) y evitar fallos inesperados. - **Optimización de algoritmos**: Se reemplazaron bucles anidados por comprensiones de listas y se usaron estructuras de datos más eficientes (como `set` para búsquedas O(1)). - **Cumplimiento estricto de PEP 8**: Se ajustaron nombres de variables a snake_case, se limitaron líneas a 79 caracteres y se organizaron imports correctamente. - **Mejora de seguridad**: Se validaron entradas de usuario y se evitaron inyecciones SQL mediante consultas parametrizadas. - **Documentación en español**: Se añadieron docstrings y comentarios claros en español para facilitar la colaboración en equipos hispanohablantes. **Código refactorizado completo:** ```python from __future__ import annotations import json import logging import re from dataclasses import dataclass, field from pathlib import Path from typing import Any, Dict, List, Optional, Union import requests from requests.exceptions import RequestException # Configuración de logging logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s") logger = logging.getLogger(__name__) @dataclass(frozen=True) class Config: """Configuración global de la aplicación.""" api_url: str = "https://api.example.com/data" timeout: int = 10 max_retries: int = 3 output_dir: Path = Path("./output") class DataProcessor: """Procesa y valida datos provenientes de una API externa.""" def __init__(self, config: Config) -> None: self.config = config self._session = requests.Session() self._session.headers.update({"User-Agent": "DataProcessor/1.0"}) def fetch_data(self, endpoint: str) -> Dict[str, Any]: """Obtiene datos de la API con reintentos y manejo de errores.""" url = f"{self.config.api_url}/{endpoint}" for attempt in range(self.config.max_retries): try: response = self._session.get(url, timeout=self.config.timeout) response.raise_for_status() return response.json() except RequestException as exc: logger.warning("Intento %d fallido para %s: %s", attempt + 1, url, exc) if attempt == self.config.max_retries - 1: raise RuntimeError(f"Fallo al obtener datos de {url}") from exc return {} # No alcanzable, pero satisface el tipo def validate_data(self, data: Dict[str, Any]) -> bool: """Valida la estructura básica de los datos recibidos.""" required_keys = {"id", "name", "value"} return required_keys.issubset(data.keys()) def process_items(self, items: List[Dict[str, Any]]) -> List[Dict[str, Any]]: """Filtra y transforma los elementos válidos.""" processed = [] for item in items: if not self.validate_data(item): logger.error("Elemento inválido omitido: %s", item.get("id", "desconocido")) continue # Transformación con pattern matching match item["value"]: case int() | float() as numeric_value: processed.append({**item, "value": numeric_value * 2}) case str() as string_value if string_value.isdigit(): processed.append({**item, "value": int(string_value) * 2}) case _: logger.warning("Valor no numérico en elemento %s", item["id"]) return processed def save_results(self, data: List[Dict[str, Any]], filename: str) -> None: """Guarda los resultados en un archivo JSON.""" try: self.config.output_dir.mkdir(parents=True, exist_ok=True) file_path = self.config.output_dir / filename with file_path.open("w", encoding="utf-8") as f: json.dump(data, f, ensure_ascii=False, indent=2) logger.info("Resultados guardados en %s", file_path) except OSError as exc: logger.error("Error al guardar archivo: %s", exc) raise def parse_cli_args(args: Optional[List[str]] = None) -> Dict[str, str]: """Parsea argumentos de línea de comandos de forma simple.""" import sys if args is None: args = sys.argv[1:] params: Dict[str, str] = {} for arg in args: if "=" in arg: key, value = arg.split("=", 1) params[key.strip("--")] = value.strip() return params def main() -> None: """Función principal de la aplicación.""" try: config = Config() processor = DataProcessor(config) cli_params = parse_cli_args() endpoint = cli_params.get("endpoint", "default") logger.info("Procesando endpoint: %s", endpoint) raw_data = processor.fetch_data(endpoint) items = raw_data.get("items", []) if not isinstance(items, list): raise TypeError("La clave 'items' debe ser una lista") processed = processor.process_items(items) processor.save_results(processed, f"results_{endpoint}.json") logger.info("Procesamiento completado con %d elementos", len(processed)) except (RuntimeError, TypeError, OSError) as exc: logger.error("Error fatal: %s", exc) raise SystemExit(1) from exc if __name__ == "__main__": main() ```

전체 프롬프트를 보려면 로그인하세요

Continue with:

By logging in, you agree to our Terms of Use and Privacy Policy

사용법

이 프롬프트는 coding와 함께 사용하도록 설계되었습니다. 위의 프롬프트 내용을 복사하여 원하는 AI 도구에 붙여넣으세요.

최상의 결과를 얻으려면 자리 표시자(대괄호 또는 대문자로 표시)를 특정 요구 사항으로 사용자 지정할 수 있습니다.

참고 자료

분류:coding| prompts.chat| python| code-audit

토론