Sunt locuri in aplicatii unde suntem obligati sa scriem ceva de genul:
M-am intrebat de mai multe ori daca am putea oare sa eliminam switch. Nu mi-a placut niciodata de acest "statement". Este foarte util, este usor de inteles, dar parca ar putea sa fi inlocuit cu altceva.
O solutie pe care pot sa o propun este inlocuirea acestuia cu un dictionar unde cheile sa reprezinta valorile posibile pe care le poate avea variabila, iar valorea din dictionar poate sa fie reprezentata de o functie anonima(lambda expression) sau de un pointer spre o metoda ce contine codul ce trebuie executat.
Toate bune si frumoase, o solutie perfecta pentru a scrie un cod "trendy" folosind ceea ce a adus nou .NET 3.5. Dar uitam un lucru de baza, performanta. Switch ... case este optimizat pentru asa ceva si orice am face, oricum am scrie, nu o sa putem inlocui un switch clasic cu nimic care sa ruleze mai repede.
Putem in schimb sa înfrumusețam codul, fiecare case sa contina doar un apel la o metoda care contine codul ce trebuie executat, astfel switch o sa poata fi inteles si vizualizat in intregime mult mai usor.
Solutia pe care am propus-o, folosind un dictionar, ar putea sa functioneaze cand vrem sa adaugam la runtime cate un "case", dar din pacate nu o sa fie mai rapida.
switch (value)
{
case "start":
...
break;
case "end":
...
break;
case "continue":
...
break;
default:
...
break;
}
M-am intrebat de mai multe ori daca am putea oare sa eliminam switch. Nu mi-a placut niciodata de acest "statement". Este foarte util, este usor de inteles, dar parca ar putea sa fi inlocuit cu altceva.
O solutie pe care pot sa o propun este inlocuirea acestuia cu un dictionar unde cheile sa reprezinta valorile posibile pe care le poate avea variabila, iar valorea din dictionar poate sa fie reprezentata de o functie anonima(lambda expression) sau de un pointer spre o metoda ce contine codul ce trebuie executat.
Toate bune si frumoase, o solutie perfecta pentru a scrie un cod "trendy" folosind ceea ce a adus nou .NET 3.5. Dar uitam un lucru de baza, performanta. Switch ... case este optimizat pentru asa ceva si orice am face, oricum am scrie, nu o sa putem inlocui un switch clasic cu nimic care sa ruleze mai repede.
Putem in schimb sa înfrumusețam codul, fiecare case sa contina doar un apel la o metoda care contine codul ce trebuie executat, astfel switch o sa poata fi inteles si vizualizat in intregime mult mai usor.
Solutia pe care am propus-o, folosind un dictionar, ar putea sa functioneaze cand vrem sa adaugam la runtime cate un "case", dar din pacate nu o sa fie mai rapida.
Comments
Post a Comment