¿Cuáles son las buenas maneras de manejar la lógica de negocios complicada que, a primera vista, requiere muchas sentencias if anidadas?¿Cómo simplificar la lógica complicada de negocios "IF"?
Ejemplo:
Cupón de descuento. podría ser:
1a) Descuento por valor
1b) Porcentaje de descuento
2a) de descuento normal
2b) de descuento progresivo
3a) Requiere acceso cupón
3b) no requieren acceso cupón
4a) Aplicado solo al cliente que ya compró antes
4b) Aplicado a cualquier cliente
5a) que se aplica a los clientes sólo de los países (X, Y, ...)
que requiere código aún más complicado de lo siguiente:
if (discount.isPercentage) {
if (discount.isNormal) {
if (discount.requiresAccessCoupon) {
} else {
}
} else if (discount.isProgressive) {
if (discount.requiresAccessCoupon) {
} else {
}
}
} else if (discount.isValue) {
if (discount.isNormal) {
if (discount.requiresAccessCoupon) {
} else {
}
} else if (discount.isProgressive) {
if (discount.requiresAccessCoupon) {
} else {
}
}
} else if (discount.isXXX) {
if (discount.isNormal) {
} else if (discount.isProgressive) {
}
}
Incluso si reemplaza FI para cambiar/caso se trata de todavía es demasiado complicado. ¿Cuáles son las formas de hacerlo legible, fácil de mantener, más comprobable y fácil de entender?
No son clases de descuento diferentes. Es una clase de descuento con todas esas cosas 1-5 como posibles propiedades. – Zelid
Estoy sugiriendo que cambie eso para que TENGA múltiples clases de descuento. –
Bien, ¿cómo se especifica que el descuento debería ser 1a, 2b, 3a, 4b al mismo tiempo? – Zelid