Dec 27 2007

Chestie care ma dispera

Category: TechnicalIuliana @ 12:11

Postul asta pentru multi s-ar putea sa fie o aberatie totala, dar eu trebuie sa-mi vars naduful.

Deci de cativa ani programez in java. Sunt intradevar pasionata de limbajul asta si de toate chestiile care se pot face in el. Prin luna septembrie am acceptat un job in cadrul facultatii pe care am terminat-o ca asistenta de laborator. Laboratoarele ce trebuia sa le predau sunt bazate pe C#. M-am gandit ca e o ocazie sa invat ceva nou si sa imi testez abilitatile pedagogice. Nu m-am asteptat sa imi placa asa de mult C#, dar am descoperit niste chestii care are a mi-ar fi de utile in java… Astazi in timp ce incercam sa fac ceva la servici mi-am adus aminte de una dintre ele, care la ce draci mi-am facut acum mi se pare a dracului de importanta. Care e buba? Raspuns: instructiunea switch.

In java, instructiunea switch poate primi ca argument(sa-i zicem asa desi termenul nu este chiar corect) numai valori de tip int sau valori constante de tip enum. In C# poate primi orice. Ei eu as avea nevoie acum sa dau ca argument un string si sa imi fie returnat un enum. Si as avea nevoie pentru ca mi-ar face treaba mult mai usoara. :(( Dar neah… tre sa gasesc o alta solutie. Asta e unul din momentele in care imi doresc sa fi ales C#-ul in locul java acum 3 sau 4 ani cand mi-a ales “the one“, da nah, pe atunci nu aveam calculator pe care sa mearga acceptabil Visual Studio asa ca m-am orientat si spre ce ce imi permitea masina. Nu imi pare rau neaparat, dar acum ca imi permit sa fac comparatii in cunostinta de cauza uneori imi cam rod unghiile de ciuda :D.

Solutie: un map static ale carei chei sunt stringurile respective, iar valorile sunt exact valorile enum-ului. Se face intitalizarea la primul apel de tip getEnum(string). Avand in vedere ca initializarea se face doar o singura data, iar de obicei enumurile nu au un numar prea mare de valori timpul pierdut cu crearea mapului este acceptabil :). (Ce pot sa zic, sunt inginer cica, iar inginerii sunt dotati cu un talent natural de a gasi solutii :))