Quali sono i modi migliori per gestire una complessa logica aziendale che, a prima vista, richiede numerose istruzioni nidificate if?Come semplificare la logica "IF" del business complicato?
Esempio:
Buono sconto. potrebbe essere:
sconto 1a) Valore
1b) Percentuale sconto
2a) sconto normale
2b) riduzione progressiva
3a) Richiede accesso coupon
3b) non richiedono accesso coupon
4a) Applicato solo al cliente che ha già acquistato prima
4b) Applicato a qualsiasi cliente
5a) Applicato al cliente solo da paesi (X, Y, ...)
che richiede il codice ancora più complicato allora questo:
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) {
}
}
Anche se si sostituisce FI per passare/caso è ancora troppo complicato Quali sono i modi per renderlo leggibile, mantenibile, più testabile e facile da capire?
Non si tratta di classi di sconto diverse. È una classe di sconto con tutte le cose 1-5 come proprietà possibili. – Zelid
Ti suggerisco di cambiarlo in modo da avere più classi di sconto. –
Ok, come quindi specificare che lo sconto dovrebbe essere 1a, 2b, 3a, 4b allo stesso tempo? – Zelid