Awesome CopilotAdventures

Documentación del producto verificada

Simplificar condiciones complejas sin cambiar las decisiones

Aplanar condiciones anidadas puede ampliar accidentalmente la elegibilidad. Un cupón que solo se aplica dentro de una rama premium o de alto valor no debe convertirse en una regla global.

Resumen del laboratorio

Dos pistas de procesamiento conectadas muestran bandejas de recursos separadas y rutas de retorno.

Ilustración conceptual original (SVG)

Simplifica la estructura preservando las decisiones.

De un vistazo Tu ruta
Nivel y tiempo 300; 55 minutos (estimación de facilitación)
Acción inicial Elige filas que distingan igualdad, superposición y comportamiento de tope.
Materiales del aprendiz Descarga 09-conditionals.zip
Espacio de trabajo Abre la raíz del kit extraído; ejecuta la baseline desde . relativa a esa raíz
Comprobación inicial esperada El proyecto seleccionado compila. La compilación por sí sola no prueba el comportamiento.
Ayuda de configuración Descarga, extrae, Git local y GitHub opcional

[!NOTE] Mover una condición fuera de su padre puede ampliar la elegibilidad.

Conceptos · Primera tarea · Lista de evidencias · Restablecer

Objetivos de aprendizaje

  • Deduce una tabla de decisiones antes de reescribir condiciones.
  • Conserva la igualdad de umbrales, la precedencia, los topes de descuento y el comportamiento ante errores.
  • Elige predicados con nombre o cláusulas de guarda según la semántica.

Antes de empezar

Prepara 09-conditionals usando la guía de configuración. El fixture principal es ECommercePricingEngine. La demostración de aprobación de préstamos es opcional y puramente ficticia; no es una política crediticia ni un sistema para tomar decisiones financieras reales.

Conceptos y casos de uso

Técnica Útil cuando Riesgo
Predicado con nombre Una condición tiene un nombre significativo en el dominio Ocultar condiciones diferentes tras un mismo nombre
Cláusula de guarda Una entrada no válida sale de forma anticipada Omitir tareas obligatorias de auditoría o limpieza
Tabla de decisiones Las reglas se solapan Suponer que las filas son mutuamente excluyentes
Estrategia por política Las políticas distintas evolucionan independientemente Añadir una jerarquía de clases para bifurcaciones triviales

Escenario del ejercicio

PricingEngine.CalculateFinalPrice evalúa la membresía, los eventos estacionales, los cupones, el envío y los topes específicos de categoría. Conserva las salidas actuales mientras aclaras una familia de condiciones.

Tarea 1 - Establecer el ámbito de decisiones

  1. Lee ECommercePricingDemo.cs y SecurityTest.cs.

  2. Identifica User, Coupon, Order, SafeAddDiscount y la lógica específica de categoría.

  3. Solicita un inventario de reglas con referencias al código fuente, aún no una propuesta de reescritura.

  4. Compila y ejecuta:

    dotnet build ECommercePricingEngine.csproj -m:1 -p:UseSharedCompilation=false
    dotnet run --no-build --project ECommercePricingEngine.csproj
    
  5. Registra los resultados, incluidas las advertencias y las entradas rechazadas. Los escenarios de demostración y los métodos etiquetados como de seguridad no constituyen un informe exhaustivo de seguridad ni de cobertura.

Tarea 2 - Deducir una tabla de límites

Empieza con estas dimensiones y después registra el valor esperado real a partir del código fuente y la línea base para cada fila seleccionada:

Dimensión Casos
Membresía Guest, Silver, Gold, Premium
Pedido de alto valor Justo por debajo, igual y por encima del umbral pertinente
Cupón Ausente, válido, caducado, tipo no válido, valor excesivo
Tope de categoría Electrónica y una categoría que no sea electrónica
Envío Nacional, internacional, cupón de envío gratuito
Pedido no válido Null, vacío, precio negativo, total excesivo

No generes a ciegas todo el producto cartesiano. Elige casos que distingan ramas e interacciones y después explica las carencias de cobertura restantes.

Tarea 3 - Planificar una transformación equivalente

Plan a refactor of membership conditions only. Keep coupon order, category caps,
shipping, and public output unchanged. Show how each selected decision-table row
maps to the new structure. Preserve > versus >= exactly. Do not edit yet.

Revisa el comportamiento de cortocircuito. Un switch puede mejorar la legibilidad, pero no demuestra que se preserven las reglas solapadas ni los efectos secundarios.

Tarea 4 - Implementar y validar

  1. Pide a Agent que implemente la parte revisada sin cambios de dependencias.
  2. Compara la tabla de decisiones con el diff antes de aceptarlo.
  3. Convierte las filas elegidas en aserciones ejecutables usando los puntos de entrada actuales del proyecto o un pequeño harness de caracterización.
  4. Vuelve a ejecutar la misma compilación y demostración y las aserciones.
  5. Cambia deliberadamente una comparación estricta por una inclusiva; confirma que falle el caso de igualdad y después restáurala.

Verifica tu trabajo

  • Las filas de la tabla de decisiones incluyen igualdad y condiciones solapadas.
  • Los topes de descuento y las reglas de envío conservan su orden.
  • Las entradas no válidas conservan su comportamiento documentado de fallo.
  • Una comprobación ejecutable detecta la mutación negativa.
  • No se usa como evidencia la afirmación «menos líneas significa correcto».

Solución de problemas

Si una condición aplanada produce un descuento adicional, reconstruye sus condiciones superiores originales. Si los registros cambian inesperadamente, inspecciona los retornos anticipados. Si solo pasan las rutas exitosas, añade un caso fallido y uno de igualdad antes de seguir refactorizando.

Práctica independiente

Repite una extracción en la copia opcional de LoanApprovalWorkflow usando solo datos sintéticos. Documenta la equivalencia de reglas sin presentar la demostración como un sistema de decisiones crediticias justo, conforme a la ley o listo para producción.

Restablecimiento

Guarda la tabla de decisiones y las salidas y después restaura únicamente los archivos modificados en tu copia desechable. No sobrescribas la salida de referencia importada con resultados inventados.

Referencias oficiales

Buscar

Búsqueda en español. Las rutas y los ejemplos ejecutables conservan el texto original.