tengo una clase Java con un método mil línea de if/else lógica de la siguiente manera:de perfeccionar/else lógica
if (userType == "admin") {
if (age > 12) {
if (location == "USA") {
// do stuff
} else if (location == "Mexico") {
// do something slightly different than the US case
}
} else if (age < 12 && age > 4) {
if (location == "USA") {
// do something slightly different than the age > 12 US case
} else if (location == "Mexico") {
// do something slightly different
}
}
} else if (userType == "student") {
if (age > 12) {
if (location == "USA") {
// do stuff
} else if (location == "Mexico") {
// do something slightly different than the US case
}
} else if (age < 12 && age > 4) {
if (location == "USA") {
// do something slightly different than the age > 12 US case
} else if (location == "Mexico") {
// do something slightly different
}
}
¿Cómo debería refactorizar esto en algo más manejable?
Entiendo que este es un ejemplo rápido, pero la comparación de cadenas realmente debe hacerse con 'igual()'. – BalusC
... ¿Qué sucede cuando tienes exactamente 12 años? – polygenelubricants
Echaré un vistazo al patrón del decorador http://en.wikipedia.org/wiki/Decorator_pattern. – Lumpy