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

ES6 klasy - pomoc oraz ukierunkowanie

Object Storage Arubacloud
0 głosów
252 wizyt
pytanie zadane 24 listopada 2017 w JavaScript przez goran. Użytkownik (930 p.)
Witam,

jestem w trakckie pisania prostej gierki w JS opartej na klasach.Chciałbym, aby ktoś mnie wskazał, jakie błędy popełniam w OOP i dobrych praktykach dotyczących klas w JS.Głównie nie jestem do końca pewny, czy wszystkie funkcji i zmienne znajdują się w odpowiednich klasach, oraz jak zmniejszyć powtarzalność kodu.

https://github.com/aqfgit/action-game - klasy znajdują się w /src

2 odpowiedzi

+2 głosów
odpowiedź 25 listopada 2017 przez Comandeer Guru (600,810 p.)

Klasy zdecydowanie za dużo robią, np. klasa Game nie powinna się zajmować generowaniem planszy. Od tego stworzyłbym osobną klasę, GameBoard. Tak samo w Player nie powinno być obsługi inputu ze strony użytkownika – to też przerzuciłbym do osobnej klasy.

Zależności są sztywno ustalone, np. klasa Player ma de facto zaszytą integrację z klasą Weapon i dodatkowo na sztywno określa, jaką broń ma użytkownik. Wszystkie zależności bym wstrzykiwał do konstruktora przy pomocy mechanizmu DI. Tak samo informacje o ekwipunku – osobna klasa wstrzykiwana do konstruktora.

komentarz 25 listopada 2017 przez goran. Użytkownik (930 p.)

Dzięki za odpowiedź.

1.Załóżmy, że mam klasę GameBoard, która reneruje obiekty.Jak miałby te obiekty do niej dodać?Zrobić tak jak teraz, że zamiast gameObjects mieć w Game to  mam je w GameBoard i tam dodać do tablicy na sztywno wszystkie obiekty?Czy da to się zrobić automatycznie, w bardziej elegancki sposób?
2.Mógłbyś zobrazować jak takie wstrzykiwanie zależonści miałoby wyglądać?

1
komentarz 25 listopada 2017 przez Comandeer Guru (600,810 p.)

ad. 1) Miej metodę addObject, która będzie dodawać te obiekty.

ad. 2) 

const inventory = new Inventory();
const player = new Player( inventory );
const game = new Game( player );

 

komentarz 25 listopada 2017 przez goran. Użytkownik (930 p.)
Ok, zaktualizowałem kod na Githubie, posługując się Twoimi sugestiami.Mógłbyś zerknąć i zobaczyć, czy o coś takiego chodziło?Masz jeszcze jakieś uwagi/wskazówki?
komentarz 26 listopada 2017 przez Comandeer Guru (600,810 p.)

No wygląda to lepiej, ale np. czemu Inventory może posiadać tylko jedną broń?

komentarz 26 listopada 2017 przez UltraSF Stary wyjadacz (11,740 p.)
Więcej nie uniesie xd
+1 głos
odpowiedź 25 listopada 2017 przez UltraSF Stary wyjadacz (11,740 p.)
Bez różnicy czy to JS, PHP czy C# zasada jest ta sama. Jedna klasa, jedno zadanie. Wiec rozbijaj klasy że tak sparafrazuje. "Mała klasa mały problem, duża klasa duży problem" ;)

Podobne pytania

0 głosów
1 odpowiedź 378 wizyt
pytanie zadane 6 kwietnia 2018 w JavaScript przez dziedziu Początkujący (370 p.)
0 głosów
1 odpowiedź 161 wizyt
pytanie zadane 26 czerwca 2017 w JavaScript przez Sławek Obywatel (1,270 p.)
+1 głos
1 odpowiedź 360 wizyt
pytanie zadane 29 listopada 2017 w JavaScript przez UltraSF Stary wyjadacz (11,740 p.)

92,553 zapytań

141,399 odpowiedzi

319,534 komentarzy

61,938 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!

...