Spesso vediamo cose del genere in codice:
void myFunction(string someValue) {
if (someValue == "a") {
// ...
} else if (someValue == "b") {
// ...
} else if (someValue == "c") {
// ...
} else {
// ...
}
}
Questo è un esempio di base della mappatura dei dati alle azioni. Fare ciò usando una grande switch
o una lunga serie di if else-if
è considerata una cattiva pratica.
Un approccio comune consiste nell'usare un Dictionary
(o HashMap
, ecc.) come una sostituzione. Per esempio:.
Dictionary<string, Action> _actions = new Dictionary<string, Action>();
// .. fill in the dictionary somewhere
void myFunction(string someValue) {
_actions[someValue]();
}
In qualche modo si sente come un approccio più elegante. Comunque non vedo come sia così.
Quando si mappano i dati alle azioni, in che modo un dizionario è migliore di un grande / crescente switch
?