• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Refaktoryzacja metody [Java]

Object Storage Arubacloud
+1 głos
250 wizyt
pytanie zadane 11 września 2017 w Java przez gujanczyk Obywatel (1,680 p.)

Da się to jakoś ładniej zapisać?

public AbstractLevel getLevel(Game game, int n){

        switch (n){
            case 1: return new Level1(game);

            case 2: return new Level2(game);

            case 3: return new Level3(game);

            case 4: return new Level4(game);

            case 5: return new Level5(game);

            case 6: return new Level6(game);

            case 7: return new Level7(game);

            case 8: return new Level8(game);

            case 9: return new Level9(game);

            case 10: return new Level10(game);

            case 11: return new Level11(game);

            case 12: return new Level12(game);

            case 13: return new Level13(game);

            case 14: return new Level14(game);

            case 15: return new Level15(game);

            //itd tak jakoś do 60 levela
        }
        return new Level1(game);
    }

 

2 odpowiedzi

+1 głos
odpowiedź 11 września 2017 przez Wiciorny Ekspert (270,110 p.)
edycja 11 września 2017 przez Wiciorny

Ja bym umieścił to w tablicy, zbiorze - > z elementem klucza tutaj skorzystaj z mapy.
Gdzie elementem kluczem-> będzie iterator :) o wartościach SWITCH(N). Rozwinę to.

Np. stworzysz osobną klase, zeby nadac w konstruktorze domyślnym -> inicjalizacje dla wszystkich mozliwosci tego zbioru i po prostu  w klasie implementujesz metode, która korzysta z tego zbioru, a w swoim kodzie tutaj wprowadzasz wywoływanie tej metody dla parametru który dostałeś :)

 

komentarz 11 września 2017 przez gujanczyk Obywatel (1,680 p.)
Dzięki za odpowiedź. Pierwszy raz mam do czynienia z tymi mapami. Jeżeli dobrze zrozumiałem to i tak żeby dodać to do mapy to muszę zrobić to tak:

map.put(1, new Level1(game));

map.put(2, new Level2(game));

itd.

co chyba jakimś lepszym rozwiązaniem nie jest?
+1 głos
odpowiedź 11 września 2017 przez Eryk Andrzejewski Mędrzec (164,260 p.)
Czy tworzenie osobnej klasy do każdego poziomu ma jakiś sens? Nie lepiej trzymać poziomy w plikach?
komentarz 11 września 2017 przez Wiciorny Ekspert (270,110 p.)
a kto mówi o tworzeniu klasy do każdego poziomu :D. Chyba że to nie retoryczne pytanie. Trzymanie w plikach, zależy jak duży mamy projekt, jak często wymieniamy dane na tych plikach - szanujmy pamięć ... i to zdecydowanie zwalnia  program i wydłuża jego czas pracy
komentarz 11 września 2017 przez Eryk Andrzejewski Mędrzec (164,260 p.)

return new Level14(game);

Javy nie znam, ale Level14 mi wygląda na klasę.

Uważasz więc że lepiej zaśmiecać kod milionami klas, każda dla jednego poziomu, niż po prostu trzymać informacje na temat każdego poziomu w plikach? Taki plik nie byłby duży i byłby wczytywany podczas wczytywania danego poziomu - nie wiem co tutaj ma aż tak znacznie wydłużać czas pracy.

komentarz 11 września 2017 przez gujanczyk Obywatel (1,680 p.)
Owszem każdy level to osobna klasa. Aplikacja śmiga na razie nawet na słabych smarfonach więc chyba nie widzę przeszkód. Dla mnie to wygodne że każdy level ma swoją klasę. Dużo więcej kodu to też nie jest bo praktycznie wszystko jest w klasie abstrakcyjnej, tu tylko ustawiam różne parametry i dodaje obiekty.
komentarz 12 września 2017 przez mbabane Szeryf (79,280 p.)

Podobne pytania

0 głosów
1 odpowiedź 254 wizyt
pytanie zadane 7 września 2019 w Java przez Paweł Szewczyk Obywatel (1,410 p.)
0 głosów
0 odpowiedzi 269 wizyt
pytanie zadane 22 stycznia 2021 w Java przez stronek1899 Nowicjusz (160 p.)
–1 głos
0 odpowiedzi 303 wizyt
pytanie zadane 16 lipca 2020 w Java przez T100 Obywatel (1,450 p.)

92,571 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...