Estoy creando un cuestionario para determinar qué tipo de piel tienes basado en 3 preguntas (grasa, seca, etc.)
¿Es la mejor manera de escribir la lógica para esto, algo como lo siguiente o hay una forma más eficiente de hacerlo en términos de rendimiento?
if (q1 == 1 && q2 == 1 && q3 == 1){ skinType = "DRY" } else if (q1 == 1 && q2 == 1 && q3 == 2){ skinType = "DRY" } else if (q1 == 1 && q2 == 1 && q3 == 3){ skinType = "DRY" } else if (q1 == 1 && q2 == 1 && q3 == 4){ skinType = "DRY" } else if (q1 == 1 && q2 == 2 && q3 == 1){ skinType = "DRY" } else if (q1 == 1 && q2 == 2 && q3 == 2){ skinType = "DRY" } else if (q1 == 1 && q2 == 2 && q3 == 3){ skinType = "DRY" } else if (q1 == 1 && q2 == 3 && q3 == 1){ skinType = "DRY" } else if (q1 == 1 && q2 == 3 && q3 == 2){ skinType = "DRY" } else if (q1 == 1 && q2 == 4 && q3 == 1){ skinType = "DRY" } else if (q1 == 1 && q2 == 4 && q3 == 2){ skinType = "DRY" } else if (q1 == 1 && q2 == 2 && q3 == 4){ skinType = "COMBO" } else if (q1 == 1 && q2 == 3 && q3 == 3){ skinType = "COMBO" } else ....etcEn términos de rendimiento, no hay nada más rápido que una simple condición, pero no en términos de legibilidad y mantenimiento del código, que también son importantes en la codificación.
Depende de tus datos. Intente encontrar patrones o combinaciones de entrada que determinen exactamente la clase de destino (por ejemplo, q1 ==1 && q2 == 1 es siempre "DRY") y elimine las líneas redundantes.
Dado que muchas de sus combinaciones de entrada parecen dar como resultado la misma clase, es decir, DRY, COMBO, también podría intentar crear condiciones anidadas similares a un árbol de decisión .
if (q1 == 1) { if (q2 == 1) { skinType = "DRY"; } else if (q2 == 2) { if (q3 == 4) { skinType = "COMBO"; } else { skinType = "DRY"; } } //... }Una opción más sofisticada para construir buenos árboles de decisión es el algoritmo ID3 .
Puede usar la declaración de cambio de caso para un mejor rendimiento ("la declaración de cambio es más rápida en la mayoría de los casos en comparación con if-else").