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

HTML5 Canvas Snake

+8 głosów
393 wizyt
pytanie zadane 25 lipca 2016 w Nasze projekty przez goran. Użytkownik (940 p.)

Cześć,
chciałbym wiedzieć,co myślicie o moim projekcie.Jest to moja pierwsza gra w HTML5.W szczególności prosiłbym o ocenę kodu JS pod względem stylu,czystości i dobrych praktyk.Poza tym piszcie,jeżeli macie jakiekolwiek uwagi.
 

Repozytorium

Tu można zagrać

3 odpowiedzi

+2 głosów
odpowiedź 25 lipca 2016 przez Comandeer Guru (579,060 p.)
  • Prawdę mówiąc dawno nie widziałem module pattern. Obecnie używa się prawdziwych modułów (ES6 kompilowanych do UMD/AMD).
  • Zamiast namespaces pomyślałbym o przepisaniu tego na obiekty
  • Za dużo let. Raczej używa się const.
  • Brak konsekwencji w kodzie. Nagle ni z tego ni z owego pojawia się wyrażenie funkcyjne zamiast normalnej funkcji. Tak samo let/const: deklaruj w jeden sposób (osobne słówko dla każdego jest preferowane).
  • Planszę lepiej odświeżać przy pomocy requestAnimationFrame zamiast setTimeout.
komentarz 25 lipca 2016 przez goran. Użytkownik (940 p.)

Dzięki za odpowiedź.

  1. Czyli powinienem używać modułów z ES6 + np. Babel?Z tego co wiem jeszcze żadna przeglądarka nie obsługuje składni modułów z ES6.
  2. Używałem namespaces,bo wydawało mi się,że w ten sposób moduły będą lepiej zabezpieczone.
komentarz 25 lipca 2016 przez Magicone Nałogowiec (45,480 p.)

To ja się dołączę, trochę purystycznie:

  • Konkretne elementy łap po atrybucie id, nie klasach.
  • Unikaj niekoniecznych wcięć tego typu, zamiast tego przerwij funkcję w konkretnym momencie.
  • Zamiast odwoływać się do [i-1] nie lepiej utworzyć zmienną previousIndex?
  • Tak samo tutaj, określ stan danych warunków w konkretnych zmiennych, wygląda to wtedy o wiele bardziej przejrzyście niż to.
  • Tutaj takie sprawdzenie jest IMO bez sensu. Jak potrzebujesz konkretne pola obiektu, to utwórz mu osobną klasę i sprawdzaj, czy podany argument jest jego instancją. No i też można zamiast ifa na ciało wsadzić przerwanie funkcji, gdy warunki nie zostały spełnione.
  • To w końcu ES5?
komentarz 25 lipca 2016 przez goran. Użytkownik (940 p.)
Dzięki za wskazówki.
Mógłbyś bardziej rozjaśnić o co chodzi z tymi wcięciami i przerwaniem funkcji,podając jakiś przykład?Nie za bardzo wiem jak miałbym to zapisać.
komentarz 25 lipca 2016 przez Comandeer Guru (579,060 p.)
Zamiast Babela proponuję po prostu rollup.js.
komentarz 25 lipca 2016 przez Magicone Nałogowiec (45,480 p.)
function() {
  if (true) {
    // do something
  }
}

// vs

function() {
  if (!false) return;

  // do something
}

 

0 głosów
odpowiedź 25 lipca 2016 przez Else Stary wyjadacz (12,260 p.)
Tak właściwie na firefoxie nie da się sterować bo przynajmniej u mnie klawisze nie reagują. Na chromie wszystko działa fajnie.
komentarz 25 lipca 2016 przez Magicone Nałogowiec (45,480 p.)

Czyżby wina tego?

komentarz 25 lipca 2016 przez goran. Użytkownik (940 p.)
Dzięki,powinno już działać.
komentarz 25 lipca 2016 przez Else Stary wyjadacz (12,260 p.)
działa
0 głosów
odpowiedź 25 lipca 2016 przez YaroJava Użytkownik (890 p.)
Mi się podoba :)

Podobne pytania

0 głosów
1 odpowiedź 193 wizyt
pytanie zadane 22 października 2019 w JavaScript przez DeaDHanter Nowicjusz (210 p.)
+1 głos
1 odpowiedź 296 wizyt
pytanie zadane 18 maja 2016 w Nasze projekty przez sofnir Gaduła (4,690 p.)
+2 głosów
1 odpowiedź 699 wizyt
pytanie zadane 2 czerwca 2016 w C i C++ przez Pixel040 Gaduła (3,020 p.)

89,689 zapytań

138,291 odpowiedzi

309,236 komentarzy

59,620 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...